Interrogation de collections de type valeur dans l'API Criteria dans Hibernate
Question
Dans ma base de données, j'ai une table d'entités (appelons-la Entité).Chaque entité peut avoir un certain nombre de types d'entités et l'ensemble des types d'entités est statique.Par conséquent, il existe une table de connexion qui contient les lignes de l’identifiant de l’entité et le nom du type d’entité.Dans mon code, EntityType est une énumération et Entity est une classe mappée par Hibernate.
dans le code de l'entité, le mappage ressemble à ceci :
@CollectionOfElements
@JoinTable(
name = "ENTITY-ENTITY-TYPE",
joinColumns = @JoinColumn(name = "ENTITY-ID")
)
@Column(name="ENTITY-TYPE")
public Set<EntityType> getEntityTypes() {
return entityTypes;
}
Oh, ai-je mentionné que j'utilise des annotations ?
Maintenant, ce que j'aimerais faire, c'est créer une requête ou une recherche HQL à l'aide d'un critère pour tous les objets Entity d'un type d'entité spécifique.
Ce La page du forum Hibernate indique que c'est impossible, mais cette page a 18 mois.Quelqu'un peut-il me dire si cette fonctionnalité a été implémentée dans l'une des dernières versions d'Hibernate, ou prévue pour la prochaine version ?
La solution
HQL :
select entity from Entity entity where :type = some elements(entity.types)
Je pense qu'on peut aussi l'écrire comme :
select entity from Entity entity where :type in(entity.types)
Autres conseils
Votre relation est-elle bidirectionnelle, c'est-à-dire EntityType
avoir un Entity
propriété?Si c'est le cas, vous pouvez probablement faire quelque chose comme entity.Name from EntityType where name = ?