我正在使用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;
最佳答案
您的HQL没有select
子句。如果只需要表单联接中的WorkOrder
实体,则需要告诉Hibernate:
currentSession.createQuery(
"select w from WorkOrder w inner join w.user as u where u.user_name=:tempName")