gpt4 book ai didi

java - 关于 JPQL 的问题,@NamedQuery

转载 作者:行者123 更新时间:2023-11-30 05:59:24 26 4
gpt4 key购买 nike

如果我有这样的东西

@Entity
public class Facility {
...
@ManyToOne
@JoinColumn(name="CUSTOMER_FK")
private Customer customer;
...
}

我的@NameQuery是这样的

@NamedQuery(name="Facility.findByCustomerId", query="select c from Facility c where c.customer=:customer_fk")

或者像这样

@NamedQuery(name="Facility.findByCustomerId", query="select c from Facility c where c.CUSTOMER_FK=:customer_fk")

最佳答案

使用 JPQL 时,您需要停止考虑外键并开始考虑对象。让我们仔细看看:

select c from Facility c where c.CUSTOMER_FK=:customer_fk

您的设施CUSTOMER_FK属性(property)吗?不,所以上面的查询是不正确的。下一篇:

select c from Facility c where c.customer=:customer_fk

从语法上看,这个是正确的。但你仍然没有思考对象。在这里,查询希望您传递客户实例,而不是 FK。因此,我会像这样重写它(它相同的查询,但它更好地传达了IMO的意图,并且我实际上会避免任何foo_fk约定,你不真正用 JPA 操纵 FK):

select c from Facility c where c.customer = :customer

如果你确实想通过 id 查找,你应该浏览关联并编写:

select c from Facility c where c.customer.id = :id

关于java - 关于 JPQL 的问题,@NamedQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3135193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com