在我们的模型中POJO的一些方法已经被注释是这样的:修改注释在运行时的属性值在Java
@Column(name="cli_clipping_id", updatable=false, columnDefinition = "varchar(" + ModelUtils.ID_LENGTH + ") COLLATE utf8_bin")
columnDefinition属性数据库供应商相关的,所以试图在HSQLDB下降模式时使用Hibernate它失败:
[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。
- 组列方法注释copy列注释对象覆盖旧的(我不知道这是可能的)
是否有可能为“黑客”这些方法的这种方式?
任何帮助,将不胜感激......
我用这个回答了一个类似的问题:http://stackoverflow.com/questions/906671/jpa-how-do-i-specify-the-table-name-corresponding-to-a-class-at-runtime/940380#940380 – 2010-06-17 13:57:53