2010-05-10 57 views
3

我想以下幾點:休眠:映射結果集本地查詢與@SqlResultSetMapping

MyResult.java:

import java.io.Serializable; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.EntityResult; 
import javax.persistence.SqlResultSetMapping; 


@Entity 
@SqlResultSetMapping(name = "myResults", entities = {@EntityResult(entityClass = MyResult.class)}) 
public class MyResult implements Serializable 
{ 

    /** 
    * 
    */ 
    private static final long serialVersionUID = -1934790337160508576L; 

    @Column(name="X") 
    private int x; 

    @Column(name="Y") 
    private double y; 


    // 
    // Getters and Setters... 
    // 
} 

而在其他的Java類:

Query q = ((org.hibernate.ejb.QueryImpl) this.entityManager.createNativeQuery (this.sql, 
         "myResults")).getHibernateQuery (); 
List<MyResult> result = q.list (); 

當我運行我得到的這段代碼:

[PersistenceUnit:MyHibernatePgSql] U nable配置的EntityManagerFactory

當我刪除:從MyResult.java 「@Entity」 的一部分,我得到:

org.hibernate.MappingException:未知SqlResultSetMapping [myResults]

我知道我做錯了什麼,但我不知道是什麼?另外我無法找到有關這方面的好文檔。

在此先感謝

編輯:查詢看起來是這樣的:SELECT X, AGG_FUNC(F) AS Y FROM...

回答

3

一些備註/問題:

  • 你真的只得到[PersistenceUnit: MyHibernatePgSql] Unable to configure EntityManagerFactory沒有任何堆棧跟蹤或日誌?

  • 您的實體在某處是否有@Id註釋(實體需要)?

  • 你爲什麼叫getHibernateQuery?這似乎是不必要的,投入到o.h.e.QueryImpl也是如此。

  • 爲什麼不使用JPQL(在這種情況下,假設你的實體具有正確的構造函數,你可以使用SELECT NEW)?

+0

感謝您的建議。問題是缺少@Id註釋。菜鳥的錯誤:) – dime 2010-05-12 18:45:13