我有一个spring roo hibernate项目和一个MySql数据库,我想使用liquibase来管理迁移。
我生成了初始更改日志并执行了changelogSync以将所有更改日志标记为已应用。现在当我做一个差异(没有修改任何东西)时,我预计差异是空的。但是它删除了所有现有的表并创建了具有不同名称的新表。
EG。一个带有generateChangeLog的示例changeSet:
<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>
使用diff:
更改set<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>
我缺少任何设置吗?
答案 0 :(得分:3)
我没有在参考网址中指定命名策略。我假设它会从persistenceUnit的属性中获取它。
所以我修改了
referenceUrl:hibernate:ejb3:persistenceUnit
到
referenceUrl:hibernate:ejb3:persistenceUnit?hibernate.ejb.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy