Bonjour,
J'aimerais modéliser une relation reflexive bidirectionnelle en jpa2.0
Le but étant de définir un objet mirroir B du même type que A et que A puisse accéder à B et B à A
Actuellement je modélise cette entité que j'appelle Hub comme ci-dessous
@Entity
public class Hub{
/** The id. */
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "HUB_ID", nullable = false)
private int id;
/** The mirror hub. */
@OneToOne(mappedBy = "initHub", cascade = CascadeType.PERSIST, optional = true, fetch = FetchType.EAGER)
private Hub mirrorhub;
/** The rescued hub. */
@OneToOne(optional = true, fetch = FetchType.EAGER)
@JoinColumn(name = "hubRescue")
private Hub initHub;
}
Le problème est qu'en base de donnée lors de la création de l'objet initHub (ID=2) je n'ai l'association que dans 1 sens.
ID=1 pour le Hubmirror
1 admin 1446733548059 1 MEDIUM_MESSAGE false null 2
2 admin 1446733548153 0 MEDIUM_MESSAGE false null null
Le null qui est en rouge devrait être remplacé par la valeur 1 comme ça on aurait bien l'association dans les 2 sens.
Même en ajoutant le bout de code suivant lors de la création de l'objet initHub je retombe exactement sur le même état en base (l'association se fait seulement dans 1 sens):
if (bean.getMirrorHub() != null) {
Hub mirrorHub = dao.find(bean.getMirrorHub().getId());
if (mirrorHub != null) {
initHub.setmirrorHub(mirrorHub);
mirrorHub.setinitHub(initHub);
}
}
J'ai vraiment besoin d'aide c'est urgent.
merci d'avance
Nicolas.
Partager