2013-03-23 26 views
0

我使用本機查詢,從數據庫中獲取數據,並將其添加到一個對象,內容浮點值,如:管理返回類型冬眠

select tons, delivered_tons from contract where id = 1 

和使用createSQLQuery()來執行查詢

並返回一個對象數組,如:

Object[] result = (Object[])query.uniqueResult(); 

扔我的對象

A a = new A((Float)result[0],(Float)result[1]); 

問題是我無法知道查詢的返回類型(float或double)。那麼hibernate是否有任何方法來控制返回類型?

回答

0

如果使用HQL而不是OS SQL時,Hibernate會利用您選擇在實體列映射類型:

假設你有一個包含合同的實體,這些領域:

@Entity 
public class Contract { 
    @Column(name = "tons") 
    private Float tons; 

    @Column(name = "delivered_tons") 
    private Float deliveredTons; 

    ... 
} 

你將簡單地執行HQL查詢

select c.tons, c.deliveredTons from Contract c where c.id = :id 

並且您將一定會得到一個包含兩個Float的數組。

這就是說,對於這樣一個簡單的查詢,你爲什麼不只是使用

Contract c = (Contract) session.get(Contract.class, id); 

,然後讓你從實體所需的字段?

+0

我正在使用一個複雜的查詢,如連接多個表,結果不僅僅是表中的列,它包含總和,平均等。所以我使用本機查詢而不是HQL(我沒有exp在編寫HQL時)我上面提到的查詢只是一個例子。 – 2013-03-23 22:20:41