创建一个与表无关的Hibernate实体

时间:2012-02-10 02:42:40

标签: hibernate jpa

我正在尝试创建一个实体,其字段不是特定于表而是特定于查询。例如:

@Entity
class MyEntity{
    @column("bookTitle ")
    private String bookTitle;

    @Column("rating ")
    private Double rating;

    @Column("sum")
    private Integer sum;
}

这些字段不是任何表的列,但我想要: SELECT o1.bookName AS bookTitle,o2.rate AS rating,o3.totalNumber AS sum ...

entityManager.createQuery(我的上面的查询,MyEntity.class)应该按预期返回一个MyEntity类型的类

不幸的是,Hibernate抱怨“找不到列”。 在EclipseLink或Toplink中,它运行良好。此外,在我看来,实体不应该与特定的表相关联,而应该包含一组随机收集的列。

任何想法?

1 个答案:

答案 0 :(得分:0)

您无法使用Hibernate / JPA将选择与@Entity映射,但您可以这样做:

public class MyEntity{

    private String bookTitle;
    private Double rating;
    private Integer sum;

    public MyEntity(String bookTitle, Double rating, Integer sum) {
         this.bookTitle = bookTitle;
         this.sum = rating;
         this.sum = sum;
    }
}

然后使用以下HQL:

select new package.MyEntity(o1.bookName, o2.rate, o3.totalNumber) from something where

另一种解决方案是创建视图并将@Entity映射到视图。