Java Hibernate异常:尝试将集合映射到一个域而不使用JoinTable

Java Hibernate异常:尝试将集合映射到一个域而不使用JoinTable,java,hibernate,jpa,one-to-many,hibernate-mapping,Java,Hibernate,Jpa,One To Many,Hibernate Mapping,我正在尝试映射包含集合的实体,而不使用JoinTable。 我一直有一个例外: org.hibernate.AnnotationException:使用@OneToMany或@ManyToMany针对未映射的类:Foo.collection[java.lang.String] 我知道它适用于JoinTable,但是我得到了两个表,而我只需要一个表。我知道如果它起作用,那么我会在表中多次使用“名称”(集合中的每个元素对应一个) 我查阅了文档(参见章节:2.2.5.3.1.2.单向和单向)和许多示例

我正在尝试映射包含集合的实体,而不使用JoinTable。 我一直有一个例外: org.hibernate.AnnotationException:使用@OneToMany或@ManyToMany针对未映射的类:Foo.collection[java.lang.String]

我知道它适用于JoinTable,但是我得到了两个表,而我只需要一个表。我知道如果它起作用,那么我会在表中多次使用“名称”(集合中的每个元素对应一个)

我查阅了文档(参见章节:2.2.5.3.1.2.单向和单向)和许多示例,但我找不到我做错了什么:( 我还发现了很多关于这个问题的问题,通常的答案是使用JoinTable,但这不是我要寻找的解决方案

我尝试使用它,比如使用@JoinColumn(name=“ID”,referencedColumnName=“name”),但效果不好

我正在使用Java6、jpa2、Hibernate3.5.4和MySql

有什么建议吗? 提前感谢,, 爸爸

@实体
@表(name=“T1”)
公开课Foo{
私人长id;
私有字符串名称;
受保护的收藏;
@身份证
@生成值
@列(name=“ID”)
公共长getId(){
返回id;
}
@基本的
@列(name=“name”,nullable=false,unique=true)
公共字符串getName(){
返回名称;
}
@列(name=“COLLECTION”)
@OneToMany(级联=级联类型.ALL)
@JoinColumn(name=“ID”)
公共集合getCollection(){
回收;
}
/*
*二传手。。。
*/
}

这在Hibernate文档中

@ElementCollection
@CollectionTable(name="Nicknames", joinColumns=@JoinColumn(name="user_id"))
@Column(name="nickname")
public Set<String> getNicknames() { ... } 
@ElementCollection
@CollectionTable(name=“昵称”,joinColumns=@JoinColumn(name=“user\u id”))
@列(name=“昵称”)
公共集get昵称(){…}

它的可能副本对我来说看起来不像是副本,或者我就是不明白……你怎么能在一个表中有你的基本实体和集合?!@babasmith:这对我来说没有意义。你能发布你的表定义吗?我想你可以这样做,但不能使用hibernate,比如(indexId,entryId,String elOfColumn[0]),(indexId、entryId、String elOfColumn[1])然后使用entryId上的select elString作为集合检索-但问题是,您无法通过hibernate配置来实现这一点。事实并非如此。您的解决方案创建了两个表,而我正试图用一个表来实现这一点(正如我在问题中所写的)。无论如何,谢谢:)如何将基本实体和集合存储在一个表中?我已经在数据库中看到了这一点(在Oracle表中)。我只是尝试使用hibernate来实现这一点,以便将整个过程计算机化。这是我的问题。
@ElementCollection
@CollectionTable(name="Nicknames", joinColumns=@JoinColumn(name="user_id"))
@Column(name="nickname")
public Set<String> getNicknames() { ... }