Lorsque j'utilise @Transactional, après avoir enregistré des objets, la fonction hibernate get retourne l'objet dont les champs de jointure sont NULL.Lorsque j'utilise l'annotation @Transactional, les relations plusieurs-à-un sont nulles
Ceci est ma couche de gestion. L'annotation @Transactional est là.
@Override
@Transactional(propagation = Propagation.REQUIRED)
public KonKonfigCoverView addWithNewObj(KonKonfigCoverView objView, Long kurumId)
throws MosBaseException {
EnvanterKitTanimView kitView = null;
if (objView.getKit() != null){
kitView = objView.getKit();
if ("0001".equals(kitView.getEnvanterKitTip().getKod())){ //ATS
kitView = atsKitBO.addObj(kitView, kurumId);
}
else if("0002".equals(kitView.getEnvanterKitTip().getKod())){ //OGSHGS
kitView = ogsHgsBO.addObj(kitView, kurumId);
}
else if("0004".equals(kitView.getEnvanterKitTip().getKod())){ //TTS
kitView = akaryakitKitBO.addObj(kitView, kurumId);
}
objView.getKonKonfig().setKit(kitView);
objView.getKonKonfigDegisiklikDetay().setKit(kitView);
objView.setKit(kitView);
}
KonKonfigCoverView view = this.addObj(objView, kurumId);
if (objView.getKit() != null){
view.setKit(kitView);
}
return view;
}
Ceci est la fonction this.addObj:
@Override
public KonKonfigView addObj(KonKonfigView view, Long kurumId) throws MosBaseException{
KonKonfig addedObj = konKonfigDAO.addObj(beforeAddObj, ilkTakilmaOdo, sonTakilmaOdo);
addedObj= konKonfigDAO.getObj(addedObj.getId());
return (KonKonfigView) BaseHelper.gulmekYok(KonKonfig.class, KonKonfigView.class, addedObj, true, EnViewTip.FULL_DESCRIPTION, null);
}
Ce module opération fonctionne bien, mais la fonction retourne getObj objet que plusieurs à un champs de relation sont nuls.
Un de mes champs qui vient nulle est que:
@ManyToOne(optional=true)
@JoinColumn(name="CAR_ID", insertable=false, updatable=false)
private Car car;
Il n'a pas résolu le problème. Je pense que la raison est que je ne sauve pas l'objet de voiture. J'attribue juste un identifiant de voiture à l'objet enfermant à l'extrémité avant. J'ai deux champs pour l'objet de voiture. '@ManyToOne (optionnel = true) @JoinColumn (name =" CAR_ID ", insérable = false, updatable = false) Voiture privée; @Column (name = "CAR_ID") private Long carId; 'Lorsque j'enregistre mon objet englobant, je le sauvegarde avec le champ ** carId ** qui contient l'identifiant d'un des objets car puis je récupère mon objet englobant. Il apporte aussi l'objet ** car ** sauf si j'ai utilisé l'annotation @Transactional. Si j'ai utilisé @Transactional objet de voiture est nul. –