我在我的PostgreSQL數據庫的兩個表:加入表在Hibernate中
CREATE TABLE tableOne (id int, name varchar(10), address varchar(20))
CREATE TABLE tableTwo (id int, info text, addresses varchar(20)[])
現在我想創建一個連接如下:
SELECT * FROM tableOne JOIN tableTwo ON address = ANY(addresses)
我試圖做到這一點使用Hibernate - 類TableOne :
@Entity
@Table(name = "tableOne")
class TableOne {
private int id;
private TableTwo tableTwo;
private String address;
@Id
@Column(name = "id")
public getId() { return id; }
@ManyToOne
@JoinFormula(value = "address = any(tableTwo.addresses)",
referencedColumnName = "addresses")
public TableTwo getTableTwo(){
return tableTwo;
}
// Setters follow here
}
但是Hibernate的不斷生成查詢與無感JOIN子句,如:
... JOIN tableTwo ON _this.address = any(tableTwo.addresses) = tableTwo.addresses
如何告訴Hibernate使用註釋格式化我的連接查詢是否正確?不幸的是,我們的項目必須僅限於Criteria API。
編輯:
在下面的評論ashokhein的建議後,我註釋的方法getTableTwo()
只有@ManyToOne
- 現在我想在那裏withClause
會與createAlias(associationPath,alias,joinType,withClause)
方法做加盟使用標準的API,想必請在我的ON
條款中加入。
但我不知道該怎麼把associationPath
和alias
參數。
任何提示?
不要在實體類中進行查詢創建。它不應該允許自定義查詢。 – ashokhein 2014-09-04 07:05:58
你的意思是創建一個Native Query嗎? – NumberFour 2014-09-04 07:11:14
您可以使用NamedQuery,HSQL,條件 – ashokhein 2014-09-04 07:12:05