gpt4 book ai didi

java - java运行时修改注解属性值

转载 作者:搜寻专家 更新时间:2023-11-01 02:55:07 29 4
gpt4 key购买 nike

我们的模型 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]

为了解决这个问题,我正在考虑这个解决方案(但如果不可能,我不想花时间),在运行时,对于每个注释的方法列:

  • 获取@Column注解
  • 创建列注释的副本,使用 javaassist 将 columnDefinition 设置为 null。
  • 将列方法注释设置为覆盖旧的复制列注释对象(我不知道这是可能的)

是否可以通过这种方式“破解”这些方法?

任何帮助将不胜感激......

最佳答案

我认为您建议的方法不可行,因为:

  1. 您在运行时获取的注解值实际上是一个实现注解接口(interface)的代理类。您不能为其属性设置新值。
  2. 无法在运行时为类或方法设置新的注释值。

但是,您可以为 Hibernate 移动到基于 xml 的配置,您可以在其中从代码外部修改参数。

关于java - java运行时修改注解属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3062110/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com