2010-12-02 46 views
4

我有2類:創建Hibernate對象的選擇

class A { 
B b; 

public A() {} 
public A(B b) { setB(b); } 
... 
} 

class B { 
int id; 
public B(int id) { setId(id); } 
} 

在HQL我想選擇這樣的:

select new A(new B(a.b.id)) from A a 

,但我得到了錯誤

org.hibernate作爲。 hql.PARSER - 行1:48:意外標記:,

是否可以在參數中創建對象,或者只選擇字段並在構造函數中創建它?

+0

你究竟想要什麼?爲什麼你需要在這裏使用`new`,你不能只是'SELECT a ...'嗎?這個類中的 – axtavt 2010-12-02 12:56:20

+0

是更多的字段,我不想選擇它們。 – Dainius 2010-12-02 13:01:01

回答

1

不知道我是否完全明白你想達到什麼。但是你可以在創建一個HQL查詢(用投影)爲你intereset列只能查詢,如:

select a.whatever, b.id from A a join a.b b 

之後,您提供的接口ResultTransformer的實現,並將其與query.setResultTransformer(yourTransformer)設爲您的query對象

你執行的結果變壓器負責爲AB

1

創建實例也許考慮編寫自己的功能來構建你的查詢和使用StrinBuilder類 - 使用hql.append我不寫出查詢!

import org.hibernate.Hibernate; import org.hibernate.search.FullTextQuery; import org.hibernate.search.FullTextSession; import org.hibernate.search.Search;

不知道它是否有幫助,否則去檢查出cyclos網絡應用程序 - 它包括大量的查詢和根據Java文件。其開放源代碼並使用全面休眠

關於