JPQL,还是仅返回一个条件的结果?

麻木

我正在尝试编写一个JPQL查询,该查询应获得一个匹配至少两个条件之一的列表。当我分别构造查询时,它们将按预期工作,但是将它们放在一起的“ OR”将返回仅匹配条件之一的列表。我不明白为什么会这样。

这是完整的查询:

SELECT a FROM Article a WHERE ((a.ag.proteinPID.uniprot.AC LIKE :genProt) 
OR (a.aid IN(SELECT a2.aid FROM Protein p JOIN p.articleList a2 WHERE p.uniprot.AC LIKE :genProt)))

和单独的:

1)

SELECT a FROM Article a WHERE a.aid IN(SELECT a2.aid FROM Protein p JOIN p.articleList a2 WHERE p.uniprot.AC LIKE :genProt)

2)

SELECT a FROM Article a WHERE a.ag.proteinPID.uniprot.AC LIKE :genProt

完整表达式返回与表达式2)相同的结果。

安德烈一世

对于第一个条件,尝试在完整查询中左连接实体:

SELECT a FROM Article a LEFT JOIN a.ag g LEFT JOIN g.proteinPID p LEFT JOIN p.uniport u WHERE ((u.AC LIKE :genProt) 
OR (a.aid IN(SELECT a2.aid FROM Protein p JOIN p.articleList a2 WHERE p.uniprot.AC LIKE :genProt)))

为何起作用:如果没有明确离开联接,我想它会INNER JOIN自动限制结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Mongo查找查询仅返回一个结果

JsonReader仅返回第一个结果

Laravel 5范围仅返回一个结果

Python-Beautifulsoup-仅返回一个结果

SELECT INNER JOIN仅返回一个结果

Gorm仅返回一个而不是多个结果

Foreach循环仅返回第一个结果

如何使getaddrinfo仅返回一个结果?

Prolog谓词仅返回一个结果

Foreach循环仅返回最后一个结果

gatsby-source-mysql仅返回一个结果

PHP SQL仅返回一个结果

循环在条件查询中返回一个结果

mysqli_fetch_assoc仅返回一个结果,即使还有更多结果

UISearchController仅返回第一个结果,但Core Data有多个结果

如何从两个查询中仅返回一个查询结果

我可以编写一个JS函数:以正常函数的方式返回还是等待并返回AJAX结果?

Python中的多处理:仅保留返回的第一个结果

ASP.NET Core API仅返回列表的第一个结果

正则表达式匹配器仅返回第一个结果

Mysql子查询仅返回一个结果,即使列表中有多个ID

如何对基于数组的文档进行排序并仅返回结果的第一个元素

Laravel WhereIn数组仅返回第一个索引结果

调用另一个仅引发异常的方法时,“方法必须返回结果”

原则仅返回一个可能违反where语句的结果

Laravel仅使用with返回数据库的第一个结果

搜索仅返回结构C中的第一个结果

Powershell:多个 Select-Object 语句仅返回第一个出现的结果

为什么ng-repeat从我的MongoDB结果中仅返回一个对象?