我们有一个具有权限的模型类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等。我只是想确保我们在升级过程中不会留下任何数据或不遗余力。