J'ai deux classes qui partagent un UUID et sont mappées unidirectionnellement. J'utilise le UUID aux lignes liées au groupe, et ce groupe partage beaucoup de détails (ce qui est juste un exemple):Hibernate Criteria Rejoindre le problème
@Entity @Table
class Something {
@Id @Column("something_id")
private Long id;
private String uuid = UUID.randomUUID().toString();
@OneToMany
@JoinColumn("uuid")
private List<Detail> details = new LinkedList<Detail>();
}
@Entity @Table
class Detail {
@Id @Column("detail_id")
private Long id;
private String value;
private String uuid;
}
Je tente d'utiliser des critères:
Criteria c = getSession().createCriteria(Something.class).createAlias("details", "detail").add(Restrictions.eq("detail.value", someValue));
Tout cela est bien et dandy, mais je ne suis pas d'obtenir des résultats en raison de la jointure:
inner join DETAIL d1_ on this_.SOMETHING_ID=d1_.UUID
Est-il possible de préciser:
inner join DETAIL d1 on this_.UUID=d1.UUID
Je m'attendais à ce que la jointure utilise l'annotation @JoinColumn
pour trouver la colonne à rejoindre. Je vois que je peux spécifier un type de jointure, mais je ne vois pas un moyen de spécifier la colonne réelle.