【发布时间】:2011-03-04 23:26:09
【问题描述】:
我们的模型 pojo 中的一些方法被这样注释:
@Column(name="cli_clipping_id", updatable=false, columnDefinition = "varchar(" + ModelUtils.ID_LENGTH + ") COLLATE utf8_bin")
columnDefinition 属性取决于数据库供应商,因此当尝试使用 Hibernate 在 HSQLDB 中删除模式时会失败:
[ERROR] 16 jun 12:58:42.480 PM main [org.hibernate.tool.hbm2ddl.SchemaExport]
Unexpected token: COLLATE in statement [create table cms.edi_editorial_obj (edi_uuid varchar(23) COLLATE]
为了解决这个问题,我正在考虑这个解决方案(但如果不可能的话,我不想花时间),在运行时,为每个方法列注释:
- 获取@Column注解
- 创建列注释的副本,使用 javaassist 将 columnDefinition 设置为 null。
- 将列方法注释设置为覆盖旧的复制列注释对象(我不知道这是可能的)
是否可以通过这种方式“破解”这些方法?
任何帮助将不胜感激......
【问题讨论】:
-
我用这个回答了一个类似的问题:stackoverflow.com/questions/906671/…