我正在使用使用Hibernate的Spring MVC应用程序。我在SQL中的一个请求看起来像这样:
SELECT work_order.* FROM work_order
inner join user
on
work_order.user_id = user.id
and
user.user_name = 'Jenna'
我确实得到了一排工作人员的结果。当我试图用Hibernate做同样的事情时,我会得到五个对象(这是正确的)但不能转换成WorkoOrder对象。 这是我的Hibernate请求:
List<WorkOrder> workorders = (List<WorkOrder>)currentSession.createQuery(
"from WorkOrder w inner join w.user as u where user_name=:tempName")
.setParameter("tempName", tempName).getResultList();
其中tempName是参数。我确实得到了对象,但是无法将它们转换为Workorder,这可能是因为Hibernate将Workorders和Users组合在一起。如何解决这个问题,只返回工作人员? 更新:用户在WorkOrder中映射
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="user_id", nullable = true)
private User user;
答案 0 :(得分:2)
您的HQL没有select
子句。如果您只需要来自您加入的WorkOrder
个实体,那么您需要告诉Hibernate:
currentSession.createQuery(
"select w from WorkOrder w inner join w.user as u where u.user_name=:tempName")