Uploaded image for project: 'WildFly WIP'
  1. WildFly WIP
  2. WFWIP-51

java.lang.AbstractMethodError: org.hibernate.test.cut.MonetoryAmountUserType.nullSafeSet(Ljava/sql/PreparedStatement;Ljava/lang/Object;ILorg/hibernate/engine/spi/SharedSessionContractImplementor;)V

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Blocker Blocker
    • JPA
    • None
    • Hide

      use attached reproducer class:

      javac App.java -cp ~/.m2/repository/org/hibernate/hibernate-core/5.1.9.Final/hibernate-core-5.1.9.Final.jar
      java -cp .:/home/msimka/.m2/repository/org/hibernate/hibernate-core/5.3.2-SNAPSHOT/hibernate-core-5.3.2-SNAPSHOT.jar:/home/msimka/.m2/repository/javax/persistence/javax.persistence-api/2.2/javax.persistence-api-2.2.jar App
      
      Show
      use attached reproducer class: javac App.java -cp ~/.m2/repository/org/hibernate/hibernate-core/5.1.9.Final/hibernate-core-5.1.9.Final.jar java -cp .:/home/msimka/.m2/repository/org/hibernate/hibernate-core/5.3.2-SNAPSHOT/hibernate-core-5.3.2-SNAPSHOT.jar:/home/msimka/.m2/repository/javax/persistence/javax.persistence-api/2.2/javax.persistence-api-2.2.jar App

      Test from Hibernate test suite CompositeUserTypeTest.testCompositeUserType(compiled with 5.1.x and run 5.3.2-SNAPSHOT) throws

      java.lang.AbstractMethodError: org.hibernate.test.cut.MonetoryAmountUserType.nullSafeSet(Ljava/sql/PreparedStatement;Ljava/lang/Object;ILorg/hibernate/engine/spi/SharedSessionContractImplementor;)V
      	at org.hibernate.type.CompositeCustomType.nullSafeSet(CompositeCustomType.java:236)
      	at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2833)
      	at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2808)
      	at org.hibernate.persister.entity.AbstractEntityPersister$4.bindValues(AbstractEntityPersister.java:3029)
      	at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:41)
      	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3037)
      	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3628)
      	at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:81)
      	at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:645)
      	at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:282)
      	at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:263)
      	at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:317)
      	at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:359)
      	at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:292)
      	at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:200)
      	at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:131)
      	at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:192)
      	at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:135)
      	at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:62)
      	at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:800)
      	at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:785)
      	at org.hibernate.test.cut.CompositeUserTypeTest.testCompositeUserType(CompositeUserTypeTest.java:47)
      	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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
      	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
      	at org.hibernate.testing.junit4.ExtendedFrameworkMethod.invokeExplosively(ExtendedFrameworkMethod.java:45)
      	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
      	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
      	at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      	at org.junit.internal.runners.statements.FailOnTimeout$StatementThread.run(FailOnTimeout.java:74)
      

      Scenario is something like:

      CompositeUserType t = new CompositeUserType(){ ...};
      CompositeCustomType cct = new CompositeCustomType(t);
      cct.nullSafeSet(preparedStatement, "value", 1, sessionImplementor);
      

            [WFWIP-51] java.lang.AbstractMethodError: org.hibernate.test.cut.MonetoryAmountUserType.nullSafeSet(Ljava/sql/PreparedStatement;Ljava/lang/Object;ILorg/hibernate/engine/spi/SharedSessionContractImplementor;)V

            resolving, fixed by combination of https://hibernate.atlassian.net/browse/HHH-12730 (Hibernate ORM 5.3.4) and compatibility transformer WFLY-10520

            Martin Simka added a comment - resolving, fixed by combination of https://hibernate.atlassian.net/browse/HHH-12730 (Hibernate ORM 5.3.4) and compatibility transformer WFLY-10520

            msimka@redhat.com, the org.hibernate.type package was intentionally not included when we were looking into binary incompatibilities because the classes contained in that package are considered SPIs that applications can extend. Since they are SPIs, we don't need to ensure binary compatibility.

            That said, I understand it is a very commonly used feature, so I'll look into the feasibility of making that package binary compatible.

            Gail Badner (Inactive) added a comment - msimka@redhat.com , the org.hibernate.type package was intentionally not included when we were looking into binary incompatibilities because the classes contained in that package are considered SPIs that applications can extend. Since they are SPIs, we don't need to ensure binary compatibility. That said, I understand it is a very commonly used feature, so I'll look into the feasibility of making that package binary compatible.

            There is the same issue when UserType and CustomType is used instead of CompositeUserType and CompositeCustomType

            Martin Simka added a comment - There is the same issue when UserType and CustomType is used instead of CompositeUserType and CompositeCustomType

              gbadner@redhat.com Gail Badner (Inactive)
              msimka@redhat.com Martin Simka
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: