Comment interroger les entités par leur valeur de collection
Je suis en utilisant jpa, et j'ai l'entité suivante:
@Entity
@Table(name="favorites_folders")
public class FavoritesFolder {
private static final long serialVersionUID = 1L;
@Id
private String id;
@NotNull
@Size(min = 1, max = 50)
public String name;
@ElementCollection(fetch = FetchType.LAZY)
@CollectionTable(
name="favorites_products",
joinColumns=@JoinColumn(name="folder_id")
)
@Column(name="product_id")
@NotNull
private Set<String> productsIds = new HashSet<String>();
}
Ce que je veux faire est d'obtenir un ensemble de FavoritesFolder
entités qui contient la chaîne "favori-id" dans leur productsIds
de l'ensemble des membres.
Personne ne sait comment cela peut-il être fait dans critères api?
Mise à jour:
Je pense à ce qui suit sql devrait faire l'affaire mais je ne suis pas sûr de la façon de le faire dans les deux JPQL
ou Criteria API
:
select * from favorites_folders join favorites_products on favorites_folders.id = favorites_products.folder_id where favorites_products.product_id = 'favorite-id'
OriginalL'auteur Noam | 2012-05-22
Vous devez vous connecter pour publier un commentaire.
D'obtenir un ensemble de FavoritesFolder entités qui contient la chaîne "favori-id" dans leur productsIds de l'ensemble des membres à l'aide de critères d'api, vous devez effectuer les opérations suivantes:
Plus d'informations sur Collections en JPQL et les Critères de Requêtes.
Collection<String>
au lieu de cela, pouvons-nous faire essentiellement la même chose mais au lieu d'avoir besoin d'un élément àequal
, nous pourrions avoir un élément de CORRESPONDANCE à l'aideLIKE
?sur un question j'ai trouvé la solution. Utiliser la méthode join sur la Racine de la classe
cb.like(from.join("apples").get("color"), textParameter)
OriginalL'auteur JMelnik
Juste une autre manière, en utilisant DANS
Ensuite, vous pouvez écrire une requête de Critères comme
OriginalL'auteur
C'est mon travail autour qui fonctionne.
Je suis en utilisant Springboot 1.5.9. Je n'ai pas le temps d'identifier la cause racine. Ce que je sais, c'est une telle propriété nested été ignoré lors de l'obtenir par le biais de
JacksonMappingAwareSortTranslator
.Donc, ce que j'ai fait pour contourner ce problème est de ne pas utiliser de Tri d'objets créés par les résolveurs.
Voici mon code dans
Kotlin
. Sans cela, lapageable.sort
estnull
et le tri ne fonctionne pas. Et mon code va créer une nouvellePageRequest
objet qui a une valeur non nullesort
qui fonctionne.OriginalL'auteur Teerapong Suksuwan