我有一个名为Customer.java的JPA对象:
@NamedQueries({@NamedQuery(name="getAccountWithCheckRangeByService",
query="SELECT c FROM Customer"})
public Long Id;
public Address address;
//getter and setter
}
现在,如果我调用命名查询并加载Custoemr对象。如果我执行c.getAddress(),我会加载地址吗?或者我是否需要编写单独的命名查询来加载地址
答案 0 :(得分:1)
您可能意味着SELECT c FROM Customer c
。
如果您想确保加载地址,可以使用fetch joins。
SELECT c FROM Customer c JOIN FETCH c.address
答案 1 :(得分:0)
尝试一下 - 看看会发生什么。如果地址是一个单独的实体,则是,它将加载所有依赖实体 - 在这种情况下,您没有注释客户和地址之间的关系是什么,但我猜你已经省略了。您可以对关系注释执行延迟加载,例如@OneToMany(fetch = FetchType.LAZY)。如果address只是Customer中的一列,那么它会加载它虽然你的JPQL语法有点奇怪 - 我会做“SELECT c FROM Customer c”。不确定您的命名查询是否有效但如果您已经尝试过,则必须这样做。