我有一个春季房间hibernate项目和一个MySql数据库,我想使用liquibase来管理迁移。
我生成了初始的变更日志,并执行了changelogSync,将所有的变更日志标记为已应用。现在,当我执行diff(不修改任何内容)时,我期望diff为空。但是,它删除了所有现有的表,并创建了具有不同名称的新表。
。一个带有generateChangeLog的示例更改集:
<changeSet author="author (generated)" id="1437392254522-37">
<createTable tableName="user_roles">
<column name="user" type="BIGINT(19)">
<constraints nullable="false"/>
</column>
<column name="roles" type="BIGINT(19)">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
changeSet with diff:
<changeSet author="author (generated)" id="1437395711084-26">
<createTable tableName="User_Role">
<column name="User_id" type="BIGINT">
<constraints nullable="false"/>
</column>
<column name="roles_id" type="BIGINT">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
是否缺少任何设置?
我没有在引用url中指定命名策略。我假设它会从persistenceUnit的属性中拾取它。
所以我修改了
referenceUrl:hibernate:ejb3:persistenceUnit
referenceUrl:hibernate:ejb3:persistenceUnit?hibernate.ejb.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy