2010-05-10 54 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