Hibernate 5.3.7 的字节码增强

3

我曾经使用一个 ant 目标在 Hibernate 4.x 中为我的类添加仪器:

<target name="instrument" depends="compile">
        <taskdef name="enhance" classname="org.hibernate.tool.enhance.EnhancementTask">
            <classpath refid="extended.classpath"/>
            <classpath path="${classbin.dir}"/>
        </taskdef>

        <instrument verbose="true">
            <fileset dir="${TARGETROOT}/home/WEB-INF/classes">
                <include name="org/zfin/publication/Publication.class"/>
            </fileset>
        </instrument>
    </target>

但是当我升级到Hibernate 5.3.7时,它停止工作了。在ant中正确的方法是什么?请注意,我不使用Maven。

我尝试了这个更改

    <target name="instrument" depends="compile">
        <taskdef name="enhance" classname="org.hibernate.tool.enhance.EnhancementTask">
            <classpath refid="extended.classpath"/>
            <classpath path="${classbin.dir}"/>
        </taskdef>

        <enhance base="${classbin.dir}" dir="${classbin.dir}/org/zfin/publication" failOnError="false" enableLazyInitialization="true"
                 enableDirtyTracking="false"
                 enableAssociationManagement="false"
                 enableExtendedEnhancement="false">
        </enhance>
    </target>

但它输出了 [增强] 无法增强类:Publication.class

表明它没有起作用。它增强了那个目录中的一些类,但并没有我需要的那个类。


1
你可能想要考虑这个链接:https://stackoverflow.com/a/47168010/2541560。 - Kayaman
1个回答

0
我发现 Hibernate 5.3.7 使用的是 byte-buddy 1.8.17。当升级到 byte buddy 1.10.18 时,一切都正常了!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接