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 = :landLordp.landLord.id = :landLordId是一个更清楚的例子。我个人更喜欢前者。

以上是关于javax.persistence NamedQuery 未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

javax.persistence这个包在哪个jar包中

为 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;