【问题标题】:JPA: Type of ArrayList field in EntityJPA:实体中 ArrayList 字段的类型
【发布时间】:2013-11-24 20:14:09
【问题描述】:

我在使用 Hibernate - JPA 时遇到了一个问题。

问题是我有一个 ArrayList 类型的条目。这个 ArrayList 可以有任何类型的值,但仅限于一些原始值 + String + Timestamp。简而言之,它们不是实体,而是基本值。

我的问题是我应该使用什么类型在实体中存储这种字段?

【问题讨论】:

    标签: hibernate jpa orm


    【解决方案1】:

    @ElementCollection 是您正在寻找的。这使您可以为非实体类定义映射,例如可嵌入或基本。

    http://en.wikibooks.org/wiki/Java_Persistence/ElementCollection

    您也可以使用@CollectionTable 来定义表格。

    @ElementCollection
    @CollectionTable(name = "data" ....)
    private List<String> data;
    

    【讨论】:

    • 是的,当我们有特定泛型类型的集合时,这很有用。但在我的情况下,列表一次可以包含任何类型的值。该列表可以具有字符串类型以及单个时间实例的时间戳。我尝试使用集合类型 List 而不指定任何泛型类型。但是它给出了EntityManagerFactory由于没有指定任何通用类型而无法配置的错误。
    • 我们可以使用 List 作为@ElementCollection 的类型吗?
    • 嗯?您的数据库将如何查找它?上次我检查大多数 RDBMS 需要为每一列定义一个列类型,而“字符串或时间戳”不是其中之一。
    • 这里的目的是将基本值保存为 Object 类型,例如 List&lt;Object&gt;。但这在 JPA 中是不允许的。它给 EntityManagerFactory 创建错误。
    • 首先,您的数据库如何查找这个?您能否提供要将这些基本类型保存到的列的定义?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    • 2017-08-22
    • 2013-01-04
    • 2012-05-07
    • 1970-01-01
    • 2023-02-24
    相关资源
    最近更新 更多