【发布时间】:2011-04-15 09:57:10
【问题描述】:
考虑以下具有两个 ManyToOne 引用的 Parent 类。
@Entity
@Table(name = "PARENT")
public class Parent {
private static final long serialVersionUID = 3730163805206219313L;
@Id
@SequenceGenerator(name = "SEQ#PARENT", sequenceName = "SEQ#PARENT", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ#PARENT")
@Column(name = "ID")
private long id;
@ManyToOne(optional = false, fetch=FetchType.EAGER)
@Fetch(FetchMode.JOIN)
@JoinColumn(name="CHILD_1_ID", referencedColumnName="FK_COLUMN_NAME")
private Child childInstance1;
@ManyToOne(optional = false, fetch=FetchType.EAGER)
@Fetch(FetchMode.JOIN)
@JoinColumn(name="CHILD_2_ID", referencedColumnName="FK_COLUMN_NAME")
private Child childInstance2;
@Column(name = "USER_ID")
private String userId;
}
我正在使用以下 hql 查询来加载父实例:
"from Parent p join fetch p.childInstance1 join fetch p.childInstance2 where p.userId = :userId"
这总是会导致 hibernate 发出单独的 sql 语句来加载 childInstance1 行,即使它执行了 fetch join。
感谢任何帮助避免额外的 sql 语句。
【问题讨论】:
标签: java hibernate orm fetching-strategy