我有一个简单的类,其中一列在技术上是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”不存在
答案 0 :(得分:2)
元素集合不存储在单个列中。它存储在一个单独的表中,就像你有一个OneToMany一样,除了没有多边的标识符。假设Hat foo有2个“bar”和“baz”:
hat table: hat_wat table:
id hat_id wat
----- ---------------
foo foo bar
foo baz
这允许查询帽子,例如,在他们的wats列表中找到所有具有“bar”的帽子。尝试在单个列中存储多个字符串真的不是一个好主意。它违反了第一个普通形式规则。