Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate UserTypeCollection出错_Hibernate_Jpa - Fatal编程技术网

Hibernate UserTypeCollection出错

Hibernate UserTypeCollection出错,hibernate,jpa,Hibernate,Jpa,我已经按照以下步骤实现了我的自定义集合 我还注释了实体的相应属性,如下所示: @OneToMany(cascade = ALL, mappedBy = "plan", fetch = EAGER, orphanRemoval = true) @CollectionType(type = "my.namespace.MyCustomCollectionType") public MyCustomCollection getThings() { return things;

我已经按照以下步骤实现了我的自定义集合

我还注释了实体的相应属性,如下所示:

  @OneToMany(cascade = ALL, mappedBy = "plan", fetch = EAGER, orphanRemoval = true)
  @CollectionType(type = "my.namespace.MyCustomCollectionType")
  public MyCustomCollection getThings() {
    return things;
  }
但是,在创建映射时,Hibernate会抱怨:

 Illegal attempt to map a non collection as a @OneToMany, @ManyToMany or @CollectionOfElements
根据我们的经验,这应该是可以的。我应该能够在方法签名中使用自定义集合,因为我使用自定义集合类型批注:

实际接口可能是java.util.Set、java.util.Collection、java.util.List、java.util.Map、java.util.SortedSet、, java.util.SortedMap或您喜欢的任何东西(“您喜欢的任何东西”的意思是 您必须编写一个 org.hibernate.usertype.UserCollectionType)


我不知道怎么了。

好的,我解决了我的问题

首先,更清楚地说,是的,我有两门课。 第一个是我的自定义集合(MyCustomCollection),另一个扩展(MyCustomCollectionType),这是Hibernate支持自定义集合所需的技术接口

无论如何,我已经找出了问题所在:

  • 首先,Hibernate只支持集合的方法签名中的接口,所以我编写了ICustomCollection。然后我需要申报 (在我的例子中),它扩展了这个接口
  • 然后,MyCustomCollectionType应返回此自定义持久集
我通过查看Hibernate中的测试套件找到了答案

但遗憾的是,PersistentSet扩展了一个非泛型集合,因此,您也必须声明一个非泛型集合


这是一本书。它在这里已经有一段时间了。

my.namespace.MyCustomCollectionType是否继承或实现了
MyCustomCollection
?它应该…您的方法签名应该类似于
public List getThings()
@yair No,它实现了UserCollectionType。我认为它不需要扩展我的CustomCollection。我试着这么做,但它并没有解决问题。嗯,有些事情还不清楚。您是否有两个类-
my.namespace.MyCustomCollectionType
MyCustomCollection
?若然,原因为何?它们之间有什么关系?