我在兩個表之間有父/子關係,並且在我的Java類中有相應的映射。這些表粗略看起來像:註釋過濾@OneToMany關聯的結果
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
額外的過濾器將只有一個列名和一個硬編碼值。有沒有辦法做到這一點使用hibernate註釋?
我看過@JoinFormula
,但是我總是需要引用父表中的列名(在JoinFormula的name
屬性中)。
在此先感謝您的任何建議。
好奇,爲什麼不把它作爲參數傳入呢? '哪裏a_ref =?和其他=?'。傳入的值可以硬編碼,如果這是你需要做的(我會建議使用可配置的屬性系統)。 – ADTC