Hibernate:使用@SqlResultSetMapping映射本地查询的结果集

3

我将尝试以下内容:

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 ...
1个回答

3

一些注释/问题:

  • 您是否真的只收到[PersistenceUnit:MyHibernatePgSql]无法配置EntityManagerFactory而没有任何堆栈跟踪或日志?

  • 您的实体是否在某个地方有@Id注释(对于实体是必需的)?

  • 为什么要调用getHibernateQuery?这似乎是不必要的,对o.h.e.QueryImpl进行转换也是如此。

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


感谢您的建议。问题是缺少@Id注释。新手错误 :) - dime

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接