【发布时间】:2011-02-24 19:13:05
【问题描述】:
我正在使用 JPA 2 和 Hibernate 3。我注意到调用 EntityManager.merge() 会在对象图中的每个引用实体上产生一个 SELECT 以及其中一些实体之间的内部连接。
假设你想合并()一个 FooBar。
@Entity
public class FooBar {
@ManyToOne
private Foo foo;
@ManyToOne
private Bar bar;
}
@Entity
public class Foo {
@ManyToOne
private Baz baz;
}
@Entity
public class Bar {
@ManyToOne
private Baz baz;
}
如果这样做,Hibernate 将为 FooBar、Foo 和 Bar 中的每一个发出一个 SELECT,并为 Baz 发出两个。然后,它将发出一个 SELECT 用于与 Baz 连接的 Foo 和另一个用于与 Baz 连接的 Bar。因为我只是想合并一个 FooBar,所以我期待它有一个 SELECT,但我最终得到了 7 个 SELECT!
首先,这正常吗?其次,如果是,有没有办法只发出一个SELECT?
谢谢。
【问题讨论】: