Hibernate没有在内连接

时间:2017-05-30 18:40:43

标签: java mysql hibernate spring-mvc

我正在使用使用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;

1 个答案:

答案 0 :(得分:2)

您的HQL没有select子句。如果您只需要来自您加入的WorkOrder个实体,那么您需要告诉Hibernate:

currentSession.createQuery(
        "select w from WorkOrder w inner join w.user as u where u.user_name=:tempName")