升级到ColdFusion 2018/Hibernate 5.2后生成的DDL无效

K. *_*eke 5 coldfusion orm hibernate coldfusion-2018

我们遇到ColdFusion 2018和/或Hibernate 5.2的问题.

我们有一系列模型可以在没有ColdFusion 2016问题的情况下生成DDL,但是在ColdFusion 2018中失败了.我们不确定哪个(ColdFusion或Hibernate)对我们看到的问题负最终责任.

有几个问题:

  • 数据库默认值不再有效
    • 字符串默认值不再正确引用.
    • 这个: property name="CompanyName" fieldtype="column" ormtype="string" default="Acme Inc." dbdefault="Acme Inc.";
    • 表中的结果创建:( CompanyName varchar(255) default Acme Inc.缺少引号)
  • 数据库名称不再正确引用
    • 我们有名为"prefix.databasename"的数据库(带点)
    • 这些用于查找但现在在CF2018中导致错误,例如"对象名称'prefix.databasename.dbo.SomeTable包含的最大前缀数量.最大值为2".
  • 表名称不再正确引用
    • 令人沮丧的是,他们有时被恰当地引用,有时则没有.以下内容取自hibernate日志:HIBERNATE DEBUG - alter table my_db.dbo.Group add DeletedByID int HIBERNATE DEBUG - alter table my_db.dbo.User add DeletedByID int HIBERNATE DEBUG - alter table [Group] add constraint FKfpa9ddoqu39xeskmmdg2pe3tq foreign key (DeletedByID) references [User] HIBERNATE DEBUG - alter table [User] add constraint FKj4hy4k4el0vvds8s8itfo2b04 foreign key (DeletedByID) references [User]
    • 在前两行中,注意数据库名称和表名都没有被正确引用(导致错误"通过JDBC语句执行DDL时出错 - 关键字'Group'附近的语法不正确."因为它在表名"组"上窒息").但是,在接下来的两行中,它会正确引用表名,并且不会使用数据库名称限定它们...

我知道有人会权衡并说我们的表名中不应该有点,我们不应该为关键字命名.注意,但最重要的是我们这样做,已经多年没有问题,并且在正确处理时它们是有效的名称.

还有其他人有类似的问题吗?我们想知道是否有一些我们缺少的新配置设置可以控制此行为,或者是否有其他方法可以强制ColdFusion/Hibernate像以前一样运行.另一种方法是更改​​数据库和表名,并通过代码搜索任何对旧名称的直接引用,但实际上,真的不想这样做.