通过JPA保存List <string>的问题?</string>

时间:2010-09-09 06:10:00

标签: java orm jpa jpa-2.0

我已经看过了

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所做的那样。

3 个答案:

答案 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.

参考

  • JPA 2.0规范
    • 第11.1.12节“ElementCollection注释”

答案 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;

它有效;)