问题如下:我们使用带注释的hibernate作为O / R Mapper。
一些@Column注释看起来像:
@Column(columnDefinition = "longblob", name = "binaryData", nullable = true)
或
@Column(columnDefinition = "mediumtext", name = "remark", nullable = true)
columnDefinition属性是特定于mysql的
例如,在postgres上,columnDefinition值应为“bytea”和“varchar(999999)”并且在oracle上可能还有别的东西。
目前Schema Export出现问题,例如在创建DDL语句时。
我能想到的可能的解决方法是 - 为DDL语句破解一些为文本替换的JDBC驱动程序(例如longblob-> bytea)。这很丑,但会以某种方式工作 - 使用hibernate xml配置而不是注释。这可能会奏效,但我更喜欢注释
有人知道其他选择吗? Hibernate特定的解决方法是可以的,例如如果columnDefinition属性可以包含方言特定值,如
@Column(columnDefinition = "mysql->mediumtext, postgres->varchar(999999)", name = "remark", nullable = true)
由于 霍尔格
答案 0 :(得分:9)
为什么不使用与数据库无关的注释,如:
@Lob
(在byte[]
或String
财产上)@Column(length=90000)
(在String
财产上)并查看将在数据库中生成哪些列。他们很可能是你想要的类型。
答案 1 :(得分:4)
一些想法:
例如,我已将连接符号从“||”更改在Oracle上使用SqlServer上的“+” 这在运行时很方便: - )