Dans mon entité UserTbl, j'ai ceJPA 2 one-to-one fetch = FetchType.EAGER ne fonctionne pas
@OneToOne(cascade = CascadeType.REMOVE, mappedBy = "user", fetch=FetchType.EAGER)
private RetailPostUserTbl retailPostUser;
@OneToOne(cascade = CascadeType.REMOVE, mappedBy = "user", fetch=FetchType.EAGER)
private BackOfficeUserTbl backOfficeUser;
Mais les deux sont toujours nuls.
Un utilisateur doit appartenir à au moins l'un d'eux ou aux deux, mais la requête renvoie toujours une valeur nulle.
J'ai essayé aller chercher via l'api de critères comme celui-ci
Root<UserTbl> root = cq.from(UserTbl.class);
root.fetch(UserTbl_.retailPostUser, JoinType.LEFT);
root.fetch(UserTbl_.backOfficeUser, JoinType.LEFT);
Mais ils sont encore toujours nulle.
Des idées pour lesquelles cela ne fonctionne pas?
L'inverse fonctionne très bien, par exemple
dans RetailPostUserTbl, cela fonctionne
@OneToOne(optional = false, cascade=CascadeType.REMOVE)
@PrimaryKeyJoinColumn
private UserTbl user;
Cela renvoie également null et c'est pourquoi j'ai ajouté le FetchType.EAGER, l'inverse fonctionne, voir les nouvelles modifications –
Je faisais les choses mal! Parce qu'il chargeait les objets lorsque les données réelles ont été demandées et que je faisais mes affirmations avant que cela n'arrive par introspection. –