[jboss-jira] [JBoss JIRA] (WFLY-10981) Hibernate51CompatibilityTransformer is missing some transformations for VersionType
Scott Marlow (JIRA)
issues at jboss.org
Thu Sep 6 14:33:00 EDT 2018
[ https://issues.jboss.org/browse/WFLY-10981?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13630120#comment-13630120 ]
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)
More information about the jboss-jira
mailing list