1

我在产品和参数之间有一个单一的关系。(JavaAssistant 用于实现惰性引用。代码在 Spring-Container 中执行)。

@Entity
public class Product extends AbstractEntity {

  @javax.persistence.ManyToOne(fetch = FetchType.LAZY)
  @javax.persistence.JoinColumn(name = "parameterID")
  private Parameter parameter;

...
}

现在我执行:

 1. Product p = em.find(Product.class, 1L);
 2. System.out.println(p.getParameter().getId())

在日志中我可以看到:

select ... **product1_.parameterID** as paramet11_38_ ... from Product product1_  where product1_.id=?
select parameter0_.id as id49_0_ ... from Parameter parameter0_ where parameter0_.id=?

为什么 Jpa 在知道参数的 id 时执行第二行的查询(因为它在第一行中读取)?当它被要求提供除 id 之外的其他属性时,它应该执行查询。你不觉得吗?为什么会这样?我们可以强制 Hibernate 做出不同的行为吗?

环境:

  • Hibernate 3.6.10 作为 JPA 提供者
  • 春天 3.1.0
  • JavaAssistant 用于实现惰性引用
4

1 回答 1

0

此问题已注册为错误 ( https://hibernate.atlassian.net/browse/HHH-3718 )。将来可能会更正。

于 2013-09-10T12:20:48.307 回答