禁用Hibernate joinColumn上的Fetch

时间:2016-03-04 07:54:04

标签: hibernate

我们正在使用Spring Boot + Hibernate,我们的一个类已经使用FetchType.EAGER加入了列。我们想要禁用fetch(只为该列返回空),但在注释掉ElementCollection和CollectionTable之后,我无法使用以下错误进行编译:

//@ElementCollection(fetch = FetchType.EAGER)
//@CollectionTable(name = "gsf_locate_request_pth", joinColumns = {@JoinColumn(name = "locate_id")})
@Column(name = "pth_ref")
private Set<Long> payToHoldRefs;


Caused by: org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: gsf_locate_request, for columns: [org.hibernate.mapping.Column(pth_ref)]

1 个答案:

答案 0 :(得分:1)

仅针对@Column(name = "pth_ref")等简单类型的注释String。 Hibernate尝试将Set<Long>放在一个表列中。当然,这是不可能的。只需使用FetchType.LAZY

即可
@ElementCollection(fetch = FetchType.LAZY)
@CollectionTable(name = "gsf_locate_request_pth", joinColumns = {@JoinColumn(name = "locate_id")})
private Set<Long> payToHoldRefs;