【问题标题】:Hibernate: Mapping result set of native query with @SqlResultSetMappingHibernate:使用@SqlResultSetMapping 映射本机查询的结果集
【发布时间】:2010-05-10 14:16:01
【问题描述】:

我正在尝试以下方法:

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] 无法配置 EntityManagerFactory

当我从 MyResult.java 中删除:“@Entity”部分时,我得到:

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

我知道我做错了什么,但我不知道是什么?我也找不到关于这个的好的文档。

提前致谢

编辑:查询如下所示:SELECT X, AGG_FUNC(F) AS Y FROM...

【问题讨论】:

    标签: java hibernate orm


    【解决方案1】:

    一些评论/问题:

    • 你真的只得到[PersistenceUnit: MyHibernatePgSql] Unable to configure EntityManagerFactory而没有任何堆栈跟踪或日志吗?

    • 您的实体是否在某处有@Id 注释(实体必需)?

    • 你为什么打电话给getHibernateQuery?这似乎是不必要的,o.h.e.QueryImpl 的演员表也是如此。

    • 您为什么不使用 JPQL(在这种情况下,您可以使用 SELECT NEW 假设您的实体确实具有正确的构造函数)?

    【讨论】:

    • 感谢您的建议。问题是缺少 @Id 注释。菜鸟错误:)
    猜你喜欢
    • 2018-06-06
    • 2014-10-01
    • 2016-09-20
    • 2014-06-25
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 2011-04-25
    相关资源
    最近更新 更多