【问题标题】:Query DSL left join query查询 DSL 左连接查询
【发布时间】:2017-04-09 06:50:23
【问题描述】:

我是 Query DSL 的新手。现在我需要在 Query DSL 中编写这个简单的查询:

select * from parent_msq pm left join child_msg cm on (cm.id = pm.id)

我尝试这样做:

QParentMsg qParentMsg = QParentMsg.parentMsg;
QChildMsg qChildMsg = QChildMsg.childMsg;

JPAQuery q = new JPAQuery(em);
q.from(qParentMsg).leftJoin(qParentMsg.id, qChildMsg).on(qParentMsg.id.eq(qChildMsg.id));

我做错了什么?

【问题讨论】:

  • 您收到什么错误信息?

标签: java sql querydsl


【解决方案1】:

如果未定义 ParentMsg 和 ChildMsg 实体之间的关系,Hibernate 5.1 之前的 Hibernate 版本将不允许加入。

如果您使用的是 hibernate 5.1 或更高版本,以下将起作用。

q.from(qParentMsg).leftJoin(qChildMsg).on(qParentMsg.id.eq(qChildMsg.id));

【讨论】:

  • 谢谢。 +1。只需更新 hibernate-core 即可按预期工作。