@Transactionalを使用すると、オブジェクトを保存した後、hibernate get関数は結合フィールドがnullのオブジェクトを返します。@Transactionalアノテーションを使用すると、多対1の関係がnullになる
これは私のビジネスレイヤーです。 @トランザクション注釈があります。
@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;
}
これは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);
}
この追加操作はうまく機能、しかしgetObj関数が返すは多対一の関係フィールドがNULLであることをオブジェクト。ヌルくる私のフィールドの
一つということです:あなたは、囲んでいるオブジェクトを保存する前に、車のオブジェクトを保存している場合を除き
@ManyToOne(optional=true)
@JoinColumn(name="CAR_ID", insertable=false, updatable=false)
private Car car;
それは問題を解決しませんでした。私は車のオブジェクトを保存しないという理由があると思います。私はフロントエンドで囲むオブジェクトに車のIDを割り当てます。私は車のオブジェクトの2つのフィールドを持っています。 @ManyToOne(オプション= true)@JoinColumn(name = "CAR_ID"、挿入可能= false、更新可能= false)専用車。 @Column(name = "CAR_ID")private long carId; '閉じたオブジェクトを保存すると、carオブジェクトのidを含む** carId **フィールドに保存してから、そのオブジェクトを取り戻します。 @Transactionalアノテーションを使わない限り、** car **オブジェクトも持ち込みます。 @Transactionalカーオブジェクトを使用した場合、nullが返されます。 –