【发布时间】:2025-12-02 16:15:02
【问题描述】:
我正在开发使用 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 对象。 这是我的休眠请求:
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 的组合。如何解决此问题,以便仅返回 Workorders? 更新:用户在 WorkOrder 中映射
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="user_id", nullable = true)
private User user;
【问题讨论】:
-
如果在您的 WorkOrder 模型中您没有映射用户,我建议您这样做
-
共享您的 WorkOrder 和 User 实体。 "work_order.user_id = user.id" 连接应该由您在那里定义的关系映射来处理。
-
@cristianorbs 我确实在我的 WorkOrder 中映射了用户
-
您能否将您的 HQL 查询更改为
select w from WorkOrder w inner join w.user as u where user_name=:tempName并再次测试。我知道你可以忽略 HQL 中的 select 子句,但我更喜欢它。
标签: java mysql hibernate spring-mvc