【问题标题】:JPA Query join with where clause on join tableJPA查询连接与连接表上的where子句
【发布时间】:2014-01-27 15:05:06
【问题描述】:

我想编写一个检索以下内容的查询:

  • 不包含联系人的客户
  • 包含联系人的客户端,但仅包含状态为“AC”的联系人实体

    从客户端客户端中选择客户端 LEFT JOIN FETCH client.contacts contact WHERE (client.contacts IS EMPTY OR (client.contacts IS NOT EMPTY AND contact.status = 'AC'))

此查询仅返回没有联系人的我的客户或只有活动联系人的客户。 有人可以帮帮我吗?

我正在使用 JPA1。我无法切换到 JPA2。 它还需要是 JPA1 查询。

当我的数据库中有以下数据时:

  • 客户端 1 --> 联系人:联系人 1 状态为 AC,联系人 2 状态为 AR
  • 客户端 2 --> 联系人:联系人 3 状态为 AR,联系人 4 状态为 AR
  • 客户端 3 --> 联系人:状态为 AC 的联系人 5,状态为 AC 的联系人 6

我想找回

  • 只有联系人 1 的客户 1
  • 没有任何联系人的客户 2
  • 客户 3 与联系人 5 和 6

【问题讨论】:

    标签: sql hibernate jpa jpql


    【解决方案1】:

    “WHERE client.status = 'AC' AND”表示您只获得状态为 AC 的客户端。 你的意思是“WHERE contact = null OR contact.status = 'AC'”吗?

    【讨论】:

    • 我的联系人可以为空,也可以包含状态已归档的联系人,但我只想检索未归档的联系人。
    猜你喜欢
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多