Hibernate Gradle插件,用于字节码增强和基于XML的映射

Hibernate Gradle插件,用于字节码增强和基于XML的映射,hibernate,gradle,hibernate-mapping,byte-code-enhancement,Hibernate,Gradle,Hibernate Mapping,Byte Code Enhancement,我得到了用于字节码增强的Hibernate Gradle插件,它增强了所有实体类的基类,但在运行时脏跟踪不起作用 我们使用HibernateXML作为生成步骤的基础(所有实体类都派生自生成的实体类),因此将@entity添加到基类很容易,HibernateGradle插件会选择所有实体(基础)类。 不幸的是,字节码增强器直接从字节码中获取字段名,而不是属性名 示例:XML映射的实体类Validation有一个基类ValidationBase,它有一个字段boolean mActive,一个boo

我得到了用于字节码增强的Hibernate Gradle插件,它增强了所有实体类的基类,但在运行时脏跟踪不起作用

我们使用HibernateXML作为生成步骤的基础(所有实体类都派生自生成的实体类),因此将
@entity
添加到基类很容易,HibernateGradle插件会选择所有实体(基础)类。 不幸的是,字节码增强器直接从字节码中获取字段名,而不是属性名

示例:XML映射的实体类
Validation
有一个基类
ValidationBase
,它有一个字段
boolean mActive
,一个
boolean isActive()
getter和一个
void setActive(boolean pActive)
setter,该setter在
Validation.hbm.XML
文件中作为mappend


标记验证是否处于活动状态。
它指出,
org.hibernate.bytecode.Enhancer.spi.Enhancer
实现使用类上的
@Entity
符号来检测实体(works),然后使用字段名作为属性名。 这不起作用,因为增强类的属性名称现在是
mActive
,但在entityMetamodel中,相同的属性称为
active

由于生成的类中有近400个Entite、>1MLOC和大量逻辑,很明显,我不能在合理的时间范围内从XML转换到带注释的类

我需要的功能是在线脏跟踪:由于会话和刷新模式中有大量对象,许多用例在
SessionImpl.autoflushiftrequired()
中花费了整个运行时间的50%-90%

在某些用例中,我们进行了重写,将大量代码移动到刷新模式只读部分,但由于各种原因,某些代码无法在远离刷新模式自动的可预测时间范围内安全地更改,并且会话大小尽可能小(在“慢”情况下通常大于50000)

因此,我的问题是:

  • hibernate gradle插件是否有技巧将字段名
    MattAttribute
    转换为
    属性
  • 由于所有基类都是生成的,我是否应该尝试让代码生成器中的
    selfdirtinestracker
    /
    扩展selfdirtinestracker
    代码生成工作,而不是使用字节码增强功能
  • 我应该放弃所有的希望吗?;-)
<property name="active" type="yes_no"> 
  <column name="ACTIVE" length="1" not-null="true"> 
    <comment>flag if the validation is active.</comment> 
  </column> 
</property>