【发布时间】:2017-10-16 19:26:13
【问题描述】:
我有一个查询,它的列比我的实体类的多。
为了不让hibernate投诉,我必须在字段中添加注释
@Transient
private Integer count;
但是这样做会使hibernate无法映射计数。假设我的查询是
session.createSQLQuery("SELECT p.*, count(p.id), sqrt(1+2) as distance FROM post p group by p.id")
我知道这个查询没有任何逻辑意义。这只是一个例子。从上面的查询返回的列将包含 post 中的所有内容和两个额外的列,计数和距离。我想将结果映射到我的entity,计数和距离用@Transient 注释,或者如果有更好的方法来映射结果。我很乐意这样做。目标不是在实体中执行此操作,而是在具有映射结果的class 中执行此操作。我试过打电话给addEntity(),但似乎没有帮助。
【问题讨论】:
-
你真的需要一个实体作为结果吗?表示您要更改从该查询返回的数据吗?
-
不,这就是为什么我说目标是拥有一个类而不是实体。我有实体只是因为我碰巧找到了一个使用实体来实现这一点的帖子,这是我尝试的最后一件事