Mise en veille prolongée automatique des conditions de jointure
-
06-09-2019 - |
Question
Hibernate classe de persistance: @Entité public class A {
@OneToMany(mappedBy = "a")
private Set<B> bSet = new HashSet<B>();
@Basic
private boolean DELETED;
}
Classe B ont également une propriété deleted. Comment peut-on traiter propriété deleted lors de se joindre automatiquement, pour les entités sélectionnez uniquement non supprimés. Peut-être avec l'aide de quelques annotations. Il est possible?
La solution 2
Beaucoup thx! c'est ma résolution:
@Entity
public class A extends DeletableEntity{
@OneToMany(mappedBy = "a")
@Where(clause = "DELETED=0 or DELETED is null")
private Set<B> bSet = new HashSet<B>();
public Set<B> getBSet() {
return bSet;
}
public void setBSet(Set<B> bSet) {
this.bSet = bSet;
}
}
et HQL "select a.DELETED de A une jointure a.bSet bSet" sera générer natif SQL comme ceci:
sélectionner a0_.DELETED comme col_0_0_ de A jointure interne a0_ B bset1_ sur a0_.id = bset1_.a_id et (bset1_.DELETED = 0 ou bset1_.DELETED est nul)
et entityManager.find (...) travaillera droite:)
Autres conseils
Selon Hibernate documentation vous devez utiliser ResultTransformer (ALIAS_TO_ENTITY_MAP).