從hibernate optional join冬眠可選加入 - 需要返回聯接列值無論哪種方式
許多現有的查詢系統中的一個遵循依靠有被EntityOne和EntityTwo之間的映射關係和不斷變化的,這不是一個attactive選項,但是現在我需要開始存儲和檢索tbl_one.two_id
中不存在於連接表中的值。在路上,這正常工作與以下映射:
@Entity
@Table(name="tbl_one")
public class EntityOne
{
....
@ManyToOne
@NotFound(action = NotFoundAction.IGNORE)
@JoinColumn(name = "two_id")
private EntityTwo two;
....
}
。但是查詢的時候,如果結果有two_id
不中連接表的字段存在,該值的值two
是空,我無法告訴tbl_one.two_id
的實際價值。我希望hibernate會創建一個虛擬的EntityTwo
對象,並且只有在關係不存在時才填充它的id字段。
我還試圖映射two_id
另一場沒有加入:
@Entity
@Table(name="tbl_one")
public class EntityOne
{
....
@ManyToOne
@NotFound(action = NotFoundAction.IGNORE)
@JoinColumn(name = "two_id", insertable = false, updatable = false)
private EntityTwo two;
@Column(name = "two_id")
private String twoId;
....
}
...但隨後的two
場從未填充,即使相應的記錄存在。
基本上我需要插入/爲tbl_one.two_id
來更新值和檢索加盟實體EntityTwo
的一些方式,如果存在這種關係,或者僅僅是爲了tbl_one.two_id
的值,如果不存在關聯關係。
我希望能夠解決這個問題,而無需爲同一張表創建兩個映射。
謝謝。
編輯:更多信息
public class EntityTwo
{
...
@Id
@Column(name = "site_id")
private String id;
...
}
與JoinFormula如我得到'org.postgresql.util.PSQLException:ERROR:列當查詢...時,this_.two_two_id不存在?我猜'價值'「two_id」應該是別的,但我無法找到網上的例子..你能幫助嗎? – pstanton 2011-03-10 09:47:00
確實沒有JoinFormula的文檔:( – pstanton 2011-03-10 10:05:16
文檔確實非常輕,請試試@JoinFormula(value =「two_id」,referencedColumnName =「two_id」)並查看生成的SQL以查看要放置爲屬性值的內容。另外,請查看http://opensource.atlassian.com/projects/hibernate/browse/HHH-5041和http://opensource.atlassian.com/projects/hibernate/browse/HHH-5171瞭解它如何工作的指標 – 2011-03-10 10:08:13