1

ProductとParameterの間に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=?

パラメータのIDがわかっているのに(1行目で読み取られるため)、Jpaが2行目のクエリを実行するのはなぜですか?id以外の属性を要求されたときにクエリを実行する必要があります。思いませんか?なぜそれがそのように振る舞うのですか?Hibernateを別の動作に強制できますか?

環境:

  • JPAプロバイダーとしてHibernate3.6.10
  • 春3.1.0
  • JavaAssistantは、遅延参照を実装するために使用されます
4

1 に答える 1

0

この問題はバグとして登録されています(https://hibernate.atlassian.net/browse/HHH-3718)。おそらく将来修正されるでしょう。

于 2013-09-10T12:20:48.307 に答える