私は1対多の関係を持つクラスを持っています。検索はうまくいきましたが、誰かがデータベースに触れましたが、今度は検索に失敗してしまいます。Oracleの1対多の検索に失敗し、Hibernate 5.1.1.Final
関係:
親エンティティ:許可期間
@OneToMany(fetch=FetchType.LAZY, mappedBy = "permitPeriodEntity")
@Cascade({CascadeType.ALL})
private Set<SubmittedFormEntity> submittedForms;
子エンティティ:送信されたフォーム
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "PERMIT_ID", insertable = false, updatable = false),
@JoinColumn(name = "PERIOD_ID", insertable = false, updatable = false)
})
private PermitPeriodEntity permitPeriodEntity;
私はオブジェクトを渡すときに生成される実際のSQLドーザー(レイジーロード)
Hibernate: select submittedf0_.PERMIT_ID as PERMIT_ID9_21_0_, submittedf0_.PERIOD_ID as PERIOD_ID8_21_0_, submittedf0_.FORM_ID as FORM_ID1_21_0_, submittedf0_.FORM_ID as FORM_ID1_21_1_, submittedf0_.CREATED_BY as CREATED_BY2_21_1_, submittedf0_.CREATED_DT as CREATED_DT3_21_1_, submittedf0_.FORM_NUM as FORM_NUM4_21_1_, submittedf0_.FORM_TYPE_CD as FORM_TYPE_CD5_21_1_, submittedf0_.MODIFIED_BY as MODIFIED_BY6_21_1_, submittedf0_.MODIFIED_DT as MODIFIED_DT7_21_1_, submittedf0_.PERIOD_ID as PERIOD_ID8_21_1_, submittedf0_.PERMIT_ID as PERMIT_ID9_21_1_ from TU_SUBMITTED_FORM submittedf0_ where submittedf0_.PERMIT_ID=? and submittedf0_.PERIOD_ID=?
だから、今ドーザマッピング後initialzedかかわらず、私は私の新しいBeanにマップするドーザーを呼び出すときに遅延し、このデータをロードするためにSQLを呼び出しているが、デバッガで、私は、エンティティのセットを見ることができます休止状態でありますそれは3つのレコードを持つ必要がありますが空です。
これは文字通り2週間続いており、コードは変更されていません。なぜこれが突然仕事を止めるのか?
負荷タイプを熱心に変更して問題を発見しました。 Hibernateは結合列を逆転させます。我々が与えられた舞台データは1,1,2,3,3の許可/期間の組み合わせを有していた。実際のデータが表示されているので、permitId = periodIdに参加しようとしているため失敗し、その逆もあります。 –
私は自分のコンピュータに戻っていませんが、この問題は参照されている列名を自分の結合列に追加する必要があると思います。 –