如果我运行以下查询:
... AND :user MEMBER OF c.owners AND ...
它工作正常,但如果我添加以下条件,如
...AND ( :user MEMBER OF c.owners
OR ( :user MEMBER OF c.department.members AND c.confidential = false )
) AND ...
它不会返回我想要的结果(就像之前的查询一样)。知道为什么吗?
修改
以下是生成的查询的相关部分(整个查询是相同的,但这些部分)
有了这个我收回了我想要的记录
and (
? in (
select
owners1_.owner_id
from
contract_owner owners1_
where
contract0_.id=owners1_.contract_id
)
)
有了这个我不知道回来了
and (
? in (
select
owners1_.owner_id
from
contract_owner owners1_
where
contract0_.id=owners1_.contract_id
)
or (
? in (
select
sysuser3_.sysuser_id
from
department_sysuser sysuser3_
where
department2_.id=sysuser3_.department_id
)
)
and contract0_.confidential=0
)
EDIT2:
在第一个片段中,我返回1条记录(仅限dev数据,prod它会更多),而在第二部分我想要取回相同的记录,但它不会回复。
用户是合同的所有者。