我们正在使用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)]
答案 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;