我已经看过了
How to persist a property of type List<String> in JPA?
和
Map a list of strings with JPA/Hibernate annotations
=============================================== ==============================
我正在尝试保存
List<String>
通过JPA。我开始知道JPA 1.0没有任何方法可以持久收集非实体类,但JPA 2.0包含@CollectionOfElements
注释。
首先,我不确定使用哪个JPA 2.0实现。之前我使用的是toplink-essentials,但它没有@CollectionOfElements
注释。
我下载了eclipse-link但没有找到任何jar文件。
所以我的问题是使用哪个JPA 2.0实现提供jar文件,以便我可以将这些jar包含在我的项目中,就像我为toplink-essentials所做的那样。
答案 0 :(得分:4)
首先,我不确定使用哪个JPA 2.0实现。之前我使用的是toplink-essentials,但它没有@CollectionOfElements注释。
TopLink-Essential不是JPA 2.0实现。正如James所指出的那样,注意JPA 2.0注释是@ElementCollection
,@CollectionOfElements
是Hibernate特定的注释,现在不赞成使用JPA注释。
我下载了eclipse-link但没有找到任何jar文件。
你下载了什么?您可以从download page获取的 EclipseLink 2.1.1安装程序Zip(28 MB)在jlib目录中包含一个多功能的jar。
所以我的问题是使用哪个JPA 2.0实现提供jar文件,以便我可以将这些jar包含在我的项目中,就像我为toplink-essentials所做的那样。
其中任何一个。我个人会使用分别来自
的Hibernate 3.5.x或EcliseLink 2.x.答案 1 :(得分:4)
请注意,JPA 2.0定义@ElementCollection而非@CollectionOfElements。它可以用来存储List。 @CollectionOfElements是一个Hibernate扩展。
在TopLink Essentials(JPA 1.0)中,你仍然可以映射它,但需要使用DescriptorCustomizer在代码中定义DirectCollectionMapping。
在EclipseLink 1.0中,这被定义为@BasicCollection,在JPA 2.0和EclipseLink&gt; = 1.2中,这被定义为@ElemenetCollection。
答案 2 :(得分:1)
只需使用ArrayList而不是List。 我试过
@Entity
public class Orar implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private ArrayList<String> lectii;
它有效;)