私は2つのテーブルを持っています:
Table A
Id (primary key)
Name
request_Id
Table B
request_Id (primary key)
request_param
これら2つのテーブル間の関係はrequest_idによるものですが、外部キー制約はありません。つまり、テーブルBにそのrequest_idのレコードがなくても、テーブルAにレコードが存在する可能性があります。 A->Bからの一方向の関係
以下は、2つのテーブルの注釈付きマッピングです。
@Entity...
class A
{
@Id
private int id;
@Column
private String Name;
@Column(name="request_id")
private String requestId
@ManyToOne(optional = true)
@JoinColumn(name="request_id", insertable=false, updatable=false)
private B b;
}
@Entity...
class B
{
@Id
@Column(name="request_id")
private String requestId;
@Column(name="param")
private String param;
}
このテーブルデータを検討してください。
table A
id = 1
name = "temp"
request_id = "A"
Bにはレコードがありません
Bに対応するレコードがないAのレコードのエンティティAをロードすると、「org.hibernate.ObjectNotFoundException:指定された識別子の行が存在しません」という例外が発生します。
SQLを出力すると、2つのクエリが表示されます。1つはテーブルAのクエリで、テーブルBの外部結合があり、もう1つはテーブルBのクエリです。
なぜそうなるのかわかりません。DBで最初のクエリを実行すると、正常に機能します。誰かが私が間違っていることを指摘したり、問題を解決するためのいくつかの指針を提供したりできますか?