Spring Data JPA trouver par propriété d’object incorporé

Je veux écrire une signature de méthode d’interface de référentiel JPA Spring Data qui me permettra de trouver des entités avec une propriété d’un object incorporé dans cette entité. Est-ce que quelqu’un sait si c’est possible, et si oui comment?

Voici mon code:

@Entity @Table(name = "BOOK_UPDATE_QUEUE", indexes = { uniqueConstraints = @UniqueConstraint(columnNames = { "bookId", "region" }, name = "UK01_BOOK_UPDATE_QUEUE")) public class QueuedBook implements Serializable { @Embedded @NotNull private BookId bookId; ... } @Embeddable public class BookId implements Serializable { @NotNull @Size(min=1, max=40) private Ssortingng bookId; @NotNull @Enumerated(EnumType.STRING) private Region region; ... } public interface QueuedBookRepo extends JpaRepository { //I'd like to write a method like this, but can't figure out how to search by region, //when region is actually a part of the embedded BookId Page findByRegion(Region region, Pageable pageable); } 

Puis-je écrire une requête à l’aide de Spring Data?

Ce nom de méthode devrait faire l’affaire:

 Page findByBookIdRegion(Region region, Pageable pageable); 

Plus d’informations à ce sujet dans la section sur la dérivation des requêtes des documents de référence.

Le précédent – findByBookIdRegion () ne fonctionnait pas pour moi. Les éléments suivants fonctionnent avec la dernière version de Ssortingng Data JPA:

 Page findByBookId_Region(Region region, Pageable pageable); 

Si vous utilisez BookId comme clé primaire combinée, n’oubliez pas de modifier votre interface à partir de:

 public interface QueuedBookRepo extends JpaRepository { 

à:

 public interface QueuedBookRepo extends JpaRepository { 

Et changez l’annotation @Embedded en @EmbeddedId, dans votre classe QueuedBook comme ceci:

 public class QueuedBook implements Serializable { @EmbeddedId @NotNull private BookId bookId; ... }