[
https://issues.jboss.org/browse/WFLY-10981?page=com.atlassian.jira.plugin...
]
Scott Marlow commented on WFLY-10981:
-------------------------------------
{quote}
I'm yet sure of the best fix, I got the tests to pass with the following transformer
changes [1]:
1. In application classes that implement/extend certain ORM classes, change method calls
to SessionImplementor, to instead call SharedSessionContractImplementor methods.
Previously, we only did this for calls to org.hibernate.* class methods.
2. Update constructors for application classes that implement
org.hibernate.collection.spi.PersistentCollection to use SharedSessionContractImplementor
instead of SessionImplementor.
I also tried checking specifically for "synthetic bridge" methods, instead of
the liberal (1) change mentioned above but that wasn't enough (see attached
alternative patch which didn't pass the tests).
To be clearer, with [1], all tests are passing, but we are changing more of the
application code to use SharedSessionContractImplementor. If some other part of the
application that didn't get transformed is still using SessionImplementor, the
application would not work. I'm not sure how likely this would be to happen or to be
a blocking issue for users. Feedback is welcome.
{quote}
Hibernate51CompatibilityTransformer is missing some transformations
for VersionType
-----------------------------------------------------------------------------------
Key: WFLY-10981
URL:
https://issues.jboss.org/browse/WFLY-10981
Project: WildFly
Issue Type: Bug
Components: JPA / Hibernate
Affects Versions: 14.0.0.Final
Reporter: Martin Simka
Assignee: Scott Marlow
There is probably missing transformation for synthetic "bridge methods" in
{{org.hibernate.type.VersionType}}
{noformat}
Caused by: java.lang.NoSuchMethodError:
org.jboss.as.test.compat.jpa.hibernate.transformer.IntegerType.seed(Lorg/hibernate/engine/spi/SessionImplementor;)Ljava/lang/Integer;
at
org.jboss.as.test.compat.jpa.hibernate.transformer.IntegerType.seed(IntegerType.java:26)
at org.hibernate.engine.internal.Versioning.seed(Versioning.java:42)
at org.hibernate.engine.internal.Versioning.seedVersion(Versioning.java:73)
at
org.hibernate.event.internal.AbstractSaveEventListener.substituteValuesIfNecessary(AbstractSaveEventListener.java:428)
at
org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:274)
at
org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:200)
at
org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:143)
at
org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:192)
at
org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:38)
at
org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:177)
at
org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:32)
at
org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:73)
at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:709)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:701)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:696)
at
org.jboss.as.test.compat.jpa.hibernate.transformer.SFSBHibernateSessionFactory.createQueueOwner(SFSBHibernateSessionFactory.java:231)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at
org.jboss.as.ee.component.ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptor.java:52)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at
org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:509)
at
org.jboss.as.weld.interceptors.Jsr299BindingsInterceptor.doMethodInterception(Jsr299BindingsInterceptor.java:90)
at
org.jboss.as.weld.interceptors.Jsr299BindingsInterceptor.processInvocation(Jsr299BindingsInterceptor.java:101)
at
org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at
org.jboss.as.ejb3.component.invocationmetrics.ExecutionTimeInterceptor.processInvocation(ExecutionTimeInterceptor.java:43)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at
org.jboss.as.jpa.interceptor.SBInvocationInterceptor.processInvocation(SBInvocationInterceptor.java:47)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at
org.jboss.as.jpa.interceptor.SFSBInvocationInterceptor.processInvocation(SFSBInvocationInterceptor.java:57)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
at
org.jboss.as.ejb3.tx.StatefulBMTInterceptor.handleInvocation(StatefulBMTInterceptor.java:94)
... 191 more
{noformat}
I don't expect users to implement directly {{VersionType}} but {{UserVersionType}}.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)