1
に動作しませんAとBの対応するクラスのようです:Hibernateは複数の条件でのテーブルに参加しなく@WhereJoinTable
@Entity
@Table(name = "A")
public class A {
@Id
@Column(name = "id")
private Integer id;
@JoinColumn(name = "b_id", nullable = true)
@OneToOne(fetch = FetchType.EAGER)
@WhereJoinTable(clause = "b_id > 0")
private B b;
@Column(name = "a_other")
private Integer aOther;
}
public class B {
@Id
@Column(name = "id")
private Integer id;
@Column(name = "b_other")
private Integer bOther;
}
私が何をしたいのクエリは次のようである: select * from A left join B on A.b_id = B.id and A.b_id != 0
。
あなたは痛みのポイントが余分な条件A.b_idに参加するということであるかもしれません!= 0
私は、クラスAで上記のよう@WhereJoinTable(clause = "b_id > 0")
を添付して、私はそれがで動作しない見つけるために、それは意味がありませんすべて。
私は@WhereJoinTable
から@Where
に変更しましたが、何も変更されていないことが分かります。
ありがとうございます。
あなたが言っていたことは、 'select * from A from A.b_id = B.idどこにA.b_id!= 0'を残してBを残したか、' A.b_id = 0'のときは何も得られません。は、 'A * Bを左からBにバインドしてBを選択してB.bidとA.b_id!= 0'を選択したとき、' Aのb_id = 0 'のときはnullのオブジェクトAを取得します。 。 – Junjie
Ahh ...それを得ました...私の答えを更新しました... –
しかし、 '@Where(clause = 'b_id> 0')'フィールドは機能しません。私はhibernate SQLログには何の効果も見いだせません。 – Junjie