詳細に説明するには複雑すぎるため、この質問に対する具体的な回答は期待していません。問題がどこにある可能性があるかについてのガイダンスです。
要約すると、エンティティの出発地、目的地、国への外部キーを持つエンティティの船があります。データベースから船を取得し、他のフィールド (日付) を変更してから、関連する出発地、目的地、および国をデータベースに照会します。Origin と Country をクエリすると、期待どおりに動作しますが、Destination をクエリすると、実行時query.getResultList()
、および の前にselect a from DESTINATION
、Hibernate が自動的に実行update SHIP set ...
され、IDN_DEST を除くすべての Ship フィールドが設定されます。
これは何が起こっているのでしょうか?
私の推測では、エンティティはセッション内で変更されているため、更新する必要があるものを休止状態にしますが、それだけです。
私が見た限りでは、Ship.java に違いはありません。
// bi-directional many-to-one association
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "IDN_ORIGIN", insertable = false, updatable = false)
private Origin tOrigin;
@Column(name = "IDN_ORIGIN")
private Integer idnOrigin;
// bi-directional many-to-one association
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "IDN_DEST", insertable = false, updatable = false)
private Destination tDest;
@Column(name = "IDN_DEST", updatable = false)
private Integer idnDest;
// bi-directional many-to-one association
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "IDN_COUNTRY", insertable = false, updatable = false)
private Country tCountry;
@Column(name = "IDN_COUNTRY")
private Integer idnCountry;