JPA Query使用连接表上的where子句连接

时间:2014-01-27 15:05:07

标签: sql hibernate jpa jpql

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

  • 不包含联系人的客户
  • 包含联系人的客户,但只包含状态为“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查询。

当我在db中有以下数据时:

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

我想检索

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

1 个答案:

答案 0 :(得分:0)

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