Hibernate是否有可能拥有这样的东西:
public interface FooList extends List<Bar> {}
然后使用@OneToMany
:
public class Baz {
@OneToMany
FooList fooList;
}
当我尝试这样做时,我得到:
非法尝试将非集合映射为@OneToMany,@ ManyToMany或@CollectionOfElements
答案 0 :(得分:1)
根据此文档 - &gt; link,只允许一组特定的集合接口。否则,需要实施UserCollectionType
:
Hibernate使用自己的集合实现,这些集合实现了丰富 使用延迟加载,缓存或状态更改检测语义。
有关 这个原因,必须将持久集合声明为接口 类型。
实际界面可能是 java.util.Collection , java.util.List,java.util.Set,java.util.Map,java.util.SortedSet, java.util.SortedMap 甚至其他对象类型(意味着您将拥有 写一个实现 org.hibernate.usertype.UserCollectionType)。
链接引用版本5.2但是此约束也存在于3.x版本之后。
答案 1 :(得分:1)
来自docs
作为要求,持久性集合值字段必须被声明为接口类型。实际界面可能是 java.util.Set , java.util.Collection , java.util.List , java.util .Map , java.util.SortedSet , java.util.SortedMap 或您喜欢的任何内容(“您喜欢的任何内容”表示您必须编写 org.hibernate.usertype.UserCollectionType 的实现。
因此,在编写UserCollectionType