使用带有jpa的ElementCollection时需要什么列类型?

时间:2014-10-22 16:56:55

标签: postgresql jpa groovy

我有一个简单的类,其中一列在技术上是List

@Entity
@Table(name='hat')
class Hat {
    @Id
    String id = UUID.randomUUID()

    @ElementCollection
    List<String> wat
}

现在,当我使用varchar(500)或字符变化(500)时,将该实体拉出数据库的PSQL代码爆炸

  

org.postgresql.util.PSQLException:错误:关系   “hat_wat”不存在

1 个答案:

答案 0 :(得分:2)

元素集合不存储在单个列中。它存储在一个单独的表中,就像你有一个OneToMany一样,除了没有多边的标识符。假设Hat foo有2个“bar”和“baz”:

hat table:             hat_wat table:

id                     hat_id    wat
-----                  ---------------
foo                    foo       bar
                       foo       baz

这允许查询帽子,例如,在他们的wats列表中找到所有具有“bar”的帽子。尝试在单个列中存储多个字符串真的不是一个好主意。它违反了第一个普通形式规则。