我正在尝试创建一个实体,其字段不是特定于表而是特定于查询。例如:
@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中,它运行良好。此外,在我看来,实体不应该与特定的表相关联,而应该包含一组随机收集的列。
任何想法?
答案 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映射到视图。