首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JPA 2查询返回不完整的结果

问JPA 2查询返回不完整的结果
EN

Stack Overflow用户
提问于 2010-10-22 02:45:52
回答 1查看 891关注 0票数 1

以下查询仅匹配在select子查询中找到的第一个值,即使所有值都存在匹配SELECT p FROM Profile p WHERE p.id IN (SELECT u.group FROM User u WHERE u.id = ?1)

子查询返回一个逗号分隔的列表,如:1,2,3。查询应返回所有三个子查询select结果的匹配项。有人知道会出什么问题吗?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2010-10-22 04:20:31

无论是在IN还是SQL中,JPQL子句都不能以这种方式工作。

(..)中的值不是“逗号分隔的字符串”,而是一个值列表。这个列表可以按字面意思指定为逗号分隔的字符串,也可以通过子查询生成,就像您的例子一样。也就是说,查询中的条件作为p.id IN ("1,2,3") (而不是p.id IN (1,2,3))工作,因此它不会产生期望的结果。

因此,您不能使用查询语言(JPQL或SQL)的强大功能来编写针对非规范化模式的查询(您的列包含一个值列表,因此它违反了1NF)。如果您在Profile和User之间有多对多关系,请使用中间连接表将其表示为多对多关系。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3990815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档