考虑以下具有两个 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 连接。
感谢您在避免额外的 sql 语句方面提供的任何帮助。