【发布时间】:2018-07-09 04:14:26
【问题描述】:
我正在使用 JPA 2.1 和 Hibernate 来实现。
举个例子:
我有一个父实体(称为 Parent)和一个子实体(称为 Child)。
UniqueKey 可嵌入:
@Embeddable
@EqualsAndHashCode
@Data
@NoArgsConstructor
public class UniqueKey implements Serializable {
public UniqueKey(String id1, String id2) {
this.id1 = id1;
this.id2 = id2;
}
@Column(name = "id1")
private String id1;
@Column(name = "id2")
private String id2;
}
父实体:
@Entity
@Table(name = "parent", uniqueConstraints = {
@UniqueConstraint(columnNames = {
"id1",
"id2"
})
})
public class Parent implements Serializable {
@Id
private UniqueKey key;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(name = "id1", referencedColumnName = "id1", insertable = false,
updatable = false),
@JoinColumn(name = "id2", referencedColumnName = "id2", insertable = false,
updatable = false)
})
private Child child;
}
子实体:
public class Child implements Serializable {
@EmbeddedId
private UniqueKey key;
@Column(name = "name")
private String name;
}
对于 Parent 的某些查询,我需要 child,而对于某些情况,我不需要。
我正在尝试通过 uniqueKey 获取,但没有调用 getChild(),但它仍在与父级一起获取子级数据。
参考this answer后。它说在@OneToOne 的情况下,即使我们定义 fetch = FetchType.LAZY ,它也总是急切地获取数据。因为这是非常古老的答案,所以我不知道 JPA 2.1 是否也会发生这种情况。
如果它也发生在 JPA 2.1 中,那么 Fetch lazy 的其他方法是什么 使用 JPA 标准构建器?
【问题讨论】:
标签: java hibernate jpa jpa-2.0