我们有一个具有权限的模型类User
,List<String>
如下所示:
@LazyCollection(LazyCollectionOption.FALSE)
@CollectionOfElements
@Column()
private List<String> permissions = Collections.emptyList();
它生成了一个 SQL 表,其中包含如下条目:
我们最近升级到了 Hibernate 4,随着@CollectionOfElements
注解从弃用变为完全删除,我们认为这是转移到 的好时机@ElementCollection
,如下所示:
@LazyCollection(LazyCollectionOption.FALSE)
@ElementCollection // << CHANGED
@Column()
private List<String> permissions = Collections.emptyList();
但是,在启动时,我们无法使用我们的管理帐户登录。好奇的是,我们使用 H2 的 JAR 检查了数据库,发现表已被更改:
我的问题:
- 是否有从旧
@CollectionOfElements
到新的 DDL/模式更改的完整列表@ElementCollection
? - 是否有推荐的做法或我可以为这些属性提供的附加注释,以确保向后兼容性?(我可以指定特定的名称映射方案或列名吗?)
- 最后,我假设所有
Collection
类型都会受到此更改的影响 -Sets
,Maps
等。我只是想确保我们在升级过程中不会留下任何数据或不遗余力。