Est-il possible de définir différentes projections par sous-types et données de ressort REST utiliser la projection la plus concrète du type de classe?Utilisation de projections différentes pour chaque sous-type d'entité
Ce problème a été exposé sur JIRA numéro DATAREST-739 et existe également un commit de fusion mais cela n'apparaît pas sur le changelog officiel et aussi je n'ai trouvé aucune documentation ou guide pour le résoudre avec les versions actuelles.
L'échantillon de cas d'utilisation utilisé dans la question est:
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
@DiscriminatorColumn(name="type")
@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=JsonTypeInfo.As.PROPERTY, property="type")
public abstract class Message implements Identifiable<UUID> { ... }
@Entity
@DiscriminatorValue("TEXT")
@JsonTypeName("TEXT")
public class TextMessage extends Message { ... }
@Entity
@DiscriminatorValue("TODO")
@JsonTypeName("TODO")
public class TodoMessage extends Message { Boolean isDone; }
@Projection(name = "summary", types = TodoMessage.class)
public class TodoMessageSummary { Boolean getIsDone(); }
@Projection(name = "summary", types = TextMessage.class)
public class TextMessageSummary { ... }
public interface MessageRepo extends JpaRepository<Message, UUID> { ... }
@RepositoryRestResource(excerptProjection = TodoMessageSummary.class)
public interface TodoMessageRepo extends JpaRepository<Message, UUID> { ... }
@RepositoryRestResource(excerptProjection = TextMessageSummary.class)
public interface TextMessageRepo extends JpaRepository<TextMessage, UUID> { ... }
Première question: comment définir une projection d'extrait pour MessageRepo utiliser TodoMessageSummary pour les entités TodoMessage et TextMessageSummary pour TextMessage?
Deuxième problème: comment définir une projection pour une autre entité ayant un champ de message? Disons que vous avez les éléments suivants:
@Projection(name = "summary", types = Dashboard.class)
public class DashboardSummary {
List<Message> getMessages();
}
SOLVED:
Merci pour votre réponse, ma peine était que j'ai besoin des projections de sous-type sur un mappage personnalisé de contrôleur. Je l'ai finalement résolu et pendant le processus, il m'a permis d'acquérir des connaissances sur d'autres questions utiles – pdorgambide