javax.persistence NamedQuery 未按预期工作
Posted
技术标签:
【中文标题】javax.persistence NamedQuery 未按预期工作【英文标题】:javax.persistence NamedQuery not working as expected 【发布时间】:2013-02-11 09:44:14 【问题描述】:我可能对此很敏感,但查询没有返回我期望的结果...
我有两个表(实体):Properties 和 Landlords 如下:
属性由字段(以及其他字段)组成:Id、propertyRef 和 landLordsid(这是与表 Landlords 的多对一连接)。
Landlords 由字段(以及其他字段)组成:Id、landlordName 和用于联接的一对多 Collection。
我希望查询返回通过整数参数“landLord”传入的房东的所有属性,例如如果参数为 2,则过滤 Properties.landLordsid 等于 2。这是我当前使用的 NamedQuery,但它返回所有属性并且似乎没有过滤。
SELECT p
from Properties p
JOIN p.landLordsid l
WHERE l.id = :landLord
知道查询有什么问题吗?
【问题讨论】:
【参考方案1】:让hibernate为你做加入:
这个 HQL 应该可以工作:
from Properties p
where p.landLord.id = :landLord
注意连接是如何隐含的,“select *”也是隐含的。
【讨论】:
感谢波西米亚人的帮助。事实证明,我从以前的查询向应用程序客户端传递了一个不正确的 Map 副本,因此结果没有改变!但至少现在我知道可以隐含加入和选择。 写where p.landLord = :landLord
或p.landLord.id = :landLordId
是一个更清楚的例子。我个人更喜欢前者。以上是关于javax.persistence NamedQuery 未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章
为 javax.persistence 编写 Maven 依赖项
错误:带有 Spring 控制器的 javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey
javax.persistence.EntityManager SQL 注入
Spring Boot jar 带来:java.lang.NoSuchMethodError: javax.persistence.Table.indexes( [Ljavax/persistence
Exceptionjava.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;