gpt4 book ai didi

hibernate - Grails 2.4.4中的Hibernate JPA冲突

转载 作者:行者123 更新时间:2023-12-02 16:04:23 25 4
gpt4 key购买 nike

我已经使用Hibernate 3将Grails 1.3.7应用程序升级到2.4.4,因为Spring Security与hibernate4插件不兼容,并且在运行时遇到了此类stacktrace的问题:

java.lang.ClassCastException: com.xxxxxx.grails.domain.WorkflowStepDescription_$$_javassist_1 cannot be cast to javassist.util.proxy.ProxyObject 
at org.codehaus.groovy.grails.orm.hibernate.proxy.GroovyAwareJavassistLazyInitializer.createProxyInstance(GroovyAwareJavassistLazyInitializer.java:107)
at org.codehaus.groovy.grails.orm.hibernate.proxy.GroovyAwareJavassistLazyInitializer.getProxy(GroovyAwareJavassistLazyInitializer.java:134)
at org.codehaus.groovy.grails.orm.hibernate.proxy.GroovyAwareJavassistProxyFactory.getProxy(GroovyAwareJavassistProxyFactory.java:64)
at org.codehaus.groovy.grails.orm.hibernate.persister.entity.GroovyAwareSingleTableEntityPersister.createProxy(GroovyAwareSingleTableEntityPersister.java:49)
at org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:360)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:281)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:152)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1090)
at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:1038)
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:630)
at org.hibernate.type.EntityType.resolve(EntityType.java:438)
at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:139)
at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:982)
at org.hibernate.loader.Loader.doQuery(Loader.java:857)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
at org.hibernate.loader.Loader.doList(Loader.java:2542)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
at org.hibernate.loader.Loader.list(Loader.java:2271)
at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:119)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1716)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:347)

到处搜索表明这是由于与Javassist版本的冲突引起的,并且可以肯定的是,我构建的JAR中有两个不同的版本:
hibernate-jpa-2.0-api-1.0.1.Final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar

查看grails依赖项报告,看起来对2.1的依赖项来自Grails本身:

来自Hibernate 3.6.10.18的一个:

+--org.grails.plugins:休眠:3.6.10.18
| \ --- org.hibernate:hibernate-entitymanager:3.6.10.Final
| \ --- org.hibernate:hibernate-core:3.6.10.Final
| \ --- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final

Grails 2.4.4中的一个:

+ --- org.grails:grails-plugin-datasource:2.4.4
| \ --- org.grails:grails-core:2.4.4
| \ --- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final

我知道Grails 2.4.4可以选择使用Hibernate 3 ...我可以避免这种依赖冲突吗,也许可以通过降级数据源插件来解决?

最佳答案

好的,这太令人费解了,我怀疑它是否会对其他人有所帮助,但是我解决了-我注意到此异常仅发生在一个特定的域类上。经过大量的试验和错误,我发现这是因为该类具有一个名为“handler”的属性,我只能认为与在更高版本的javassist中的方法冲突。我将其更改为“actionHandler”,错误消失了。

毫无疑问,这两个JAR版本仍然是一个问题,但是在这个问题上它们是一个红鲱鱼。检查您的域类属性名称是否可疑!

关于hibernate - Grails 2.4.4中的Hibernate JPA冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26985752/

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