我们的模型pojos中的一些方法已经注释如下:
@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]
要解决这个问题,我正在考虑这个解决方案(但不想花时间,如果不可能),在运行时,对于每个注释的方法列:
是否有可能以这种方式“破解”这些方法?
非常感谢任何帮助......
答案 0 :(得分:3)
我不认为你建议的方法是可行的,因为:
get
的注释值实际上是实现注释接口的代理类。您无法为其属性设置新值。但是,您可以转到基于xml的Hibernate配置,您可以在代码外部修改参数。
答案 1 :(得分:1)
如果使用ANT构建,则可以执行预编译步骤并使用正则表达式更改文件中的代码。
答案 2 :(得分:0)
尽管如此,这实际上是一个旧线程,上面的答案2对于第2点是不正确的: 实际上,类运行可以在运行时更改。
我仍然很好奇如何为方法完成它。