【问题标题】:javax.persistence NamedQuery not working as expectedjavax.persistence NamedQuery 未按预期工作
【发布时间】: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

知道查询有什么问题吗?

【问题讨论】:

    标签: jakarta-ee jpa hql named-query


    【解决方案1】:

    让hibernate为你做加入:

    这个 HQL 应该可以工作:

    from Properties p 
    where p.landLord.id = :landLord
    

    注意连接是如何隐含的,“select *”也是隐含的。

    【讨论】:

    • 感谢波西米亚人的帮助。事实证明,我从以前的查询向应用程序客户端传递了一个不正确的 Map 副本,因此结果没有改变!但至少现在我知道可以隐含加入和选择。
    • where p.landLord = :landLordp.landLord.id = :landLordId是一个更清楚的例子。我个人更喜欢前者。
    猜你喜欢
    • 2021-06-04
    • 2022-01-24
    • 2015-05-11
    • 2020-05-15
    • 2014-10-31
    • 2018-02-12
    • 2014-01-20
    • 2015-01-13
    • 2013-08-01
    相关资源
    最近更新 更多