2 つのテーブル間に親子関係があり、Java クラスに対応するマッピングがあります。表は大まかに次のようになります。
A (ref number, stuff varchar2(4000))
B (a_ref number, other number, foo varchar2(200))
および Java コード:
@Entity
class A {
@Id
@Column(name = "REF")
private int ref;
@OneToMany
@JoinColumn(name = "A_REF", referencedName = "REF")
private Set<B> bs;
}
@Entity
class B {
@Id
@Column(name = "A_REF")
private int aRef;
@Id
@Column(name = "OTHER")
private int other;
}
これは問題なく動作しますが、子テーブルから取得した行にフィルターを追加したいと考えています。生成されるクエリは次のようになります。
select a_ref, other, foo from B where a_ref = ?
そして、私はそれが欲しい:
select a_ref, other, foo from B where a_ref = ? and other = 123
追加のフィルターは、列名とハードコーディングされた値のみです。休止状態の注釈を使用してそれを行う方法はありますか?
を見てきましたが@JoinFormula
、常に親テーブルの列名を参照する必要があります ( name
JoinFormula の属性で)。
アドバイスをよろしくお願いします。