【发布时间】:2014-06-25 08:03:27
【问题描述】:
我有一个复杂的本地查询。所以使用 JPA 2.0(带有 Hibernate 实现),我声明了一个 NamedNativeQuery
@NamedNativeQuery(name="latestStatusByUser",
query=" with latest_behav_status as "
+ " (select .......),"
+ " latest_behav_avail as ("
+ " .......) "
+ " select ........"
+ " from user "
+ " left outer join latest_behav_status lbs .... "
+ " left outer join...."
所以在我的代码中我调用:
List<UserBehavior> rec = entityManager.createNamedQuery("latestStatusByUser").getResultList();
但是,结果,我得到了一个对象列表而不是用户行为列表。即使我指定了结果类,我也会收到错误,因为 UserBehavior 是 POJO 而不是实体。
使用命名查询,我可以使用新的:
select new org.project.UserBehavior(user_i...) from
但是如何使用 NativeQuery 和 JPA2.0(JPA2.1 自带解决方案,使用 @ConstructorResult):
http://mariemjabloun.blogspot.com/2014/05/jpa-mapping-native-query-to-bean-pojo.html
所以问题是如何使用 JPA 2.0 将结果集映射到 Bean 中??
【问题讨论】:
-
在 Stackoverflow 上查看此答案:stackoverflow.com/questions/13012584/… 使用 JPA 2.0 似乎无法实现您想要实现的目标。使 UserBehavior 成为
@Entity对您没有解决方案吗?从数据库检索结果后,您仍然可以将其数据复制到 DTO 或 POJO 中。也许我们需要更多关于您的上下文的信息。