Hibernate is not a dependency of Tapestry. The integration is provided as a separate module. There is no surefire way to make such a module compatible across all version combinations (tapestry and hibernate).
I think tapestry-hibernate should always be aligned with the latest version of Hibernate (currently 5.x). If possible, it should also support earlier versions of Hibernate, but only to a point and not at all costs. All other users are free to fork the module and adapt it to their special needs. Legacy support of ancient versions is not a common use scenario. On Wed, Jan 13, 2016 at 11:11 AM, Jens Breitenstein <mailingl...@j-b-s.de> wrote: > Hi Kalle, hi all! > > I migrated to Hibernate 4.2.8 and everything works fine. > > Nevertheless I want to open a discussion about the current persistence > layer integration of T5.4, if I am allowed to. > I do not believe an UI Framework should force users to upgrade a > persistence layer to a particular version. I just want to mention that > financial institutions in general do not allow access to public maven repos > at all (yes, I was caught in trap like this more than once) which makes > upgrades really painful as simply not all library versions exist. And we > should keep in mind, that a reuse of the entire Hibernate part for backend > processing is not unusual, so changes may/will affect other projects, too. > > Definitely I see the problem that Hibernate makes incompatible changes > even in minor version, which is a different topic, but we have to adress it > somehow to decouple Tapestry from external dependencies. To me it looks > like we need multiple tapestry-hibernate modules like: > - tapestry-hibernate-3, > - tapestry-hibernate-4.0-4.2.8 > - tapestry-hibernate-4.3-4xwhatever > - tapestry-hibernate-5.x > to get rid of a particular version and allow users making a choice fitting > their environment. > > > Imho we should treat plain Java dependency management similar to > JavaScript dependencies and avoid tight coupling of particular dependencies > at all. Please correct me if I am wrong. > > > Thanks for helping > > Jens > > > > > Am 12/01/16 um 06:23 schrieb Kalle Korhonen: > >> You could try backing out the tapestry-hibernate and >> tapestry-hibernate-core libs to a T5.4 version before beta-17 (see >> >> http://markmail.org/message/yeqlybz6hivwwcxk#query:+page:1+mid:ahfcfibfff2t6ueu+state:results >> ). >> They were not available via Maven central and the staging repos are not >> available anymore so you'd have to build from the tag yourself. No >> guarantee that it'd work but there were fairly few changes (I know because >> I did the update originally). >> >> The 4.x Hibernate update was committed to the main branch over three >> years(!) ago, so if I were you, I'd just bite the bullet and update to >> Hibernate 4.x. I know, it always sucks upgrade several libs at once. >> >> Kalle >> >> On Mon, Jan 11, 2016 at 4:47 PM, Jens Breitenstein <mailingl...@j-b-s.de> >> wrote: >> >> Hi Thiago, thanks for your answer! >>> >>> >>> >>> After some "more" dependency exclusions, the following (hibernate >>> related) >>> libs are left: >>> >>> * org.apache.tapestry:tapestry-hibernate:5.4.0 >>> * org.apache.tapestry:tapestry-hibernate-core:5.4.0 >>> >>> and >>> >>> * org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final >>> * org.hibernate:hibernate-commons-annotations:3.2.0.Final >>> * org.hibernate:hibernate-core:3.6.10.Final >>> * org.hibernate:hibernate-validator:3.1.0.GA >>> >>> But the error still exists. >>> >>> org.apache.tapestry5.ioc.internal.OperationException: Error invoking >>> method public static >>> org.apache.tapestry5.hibernate.HibernateSessionManager >>> >>> org.apache.tapestry5.hibernate.modules.HibernateCoreModule.buildHibernateSessionManager(org.apache.tapestry5.hibernate.HibernateSessionSource,org.apache.tapestry5.ioc.services.PerthreadManager): >>> org.hibernate.SessionFactory.openSession()Lorg/hibernate/Session; >>> at >>> >>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:186) >>> at >>> >>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:90) >>> at >>> >>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72) >>> at >>> >>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1260) >>> at >>> >>> org.apache.tapestry5.ioc.internal.util.ConstructionPlan.createObject(ConstructionPlan.java:61) >>> at >>> >>> org.apache.tapestry5.ioc.internal.ServiceBuilderMethodInvoker.createObject(ServiceBuilderMethodInvoker.java:61) >>> at >>> >>> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:47) >>> at >>> >>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82) >>> at >>> >>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72) >>> at >>> >>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1260) >>> at >>> >>> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:51) >>> at >>> >>> org.apache.tapestry5.ioc.internal.services.PerthreadManagerImpl$DefaultObjectCreator.createObject(PerthreadManagerImpl.java:275) >>> at $HibernateSessionManager_142885567b0747b9.delegate(Unknown >>> Source) >>> at $HibernateSessionManager_142885567b0747b9.getSession(Unknown >>> Source) >>> at $HibernateSessionManager_142885567b0746e9.getSession(Unknown >>> Source) >>> at $Session_142885567b0747b8.readProperty(Unknown Source) >>> at $Session_142885567b0747b8.createCriteria(Unknown Source) >>> at $Session_142885567b074696.createCriteria(Unknown Source) >>> .... >>> Caused by: java.lang.RuntimeException: Error invoking method public >>> static >>> org.apache.tapestry5.hibernate.HibernateSessionManager >>> >>> org.apache.tapestry5.hibernate.modules.HibernateCoreModule.buildHibernateSessionManager(org.apache.tapestry5.hibernate.HibernateSessionSource,org.apache.tapestry5.ioc.services.PerthreadManager): >>> org.hibernate.SessionFactory.openSession()Lorg/hibernate/Session; >>> at >>> >>> org.apache.tapestry5.ioc.internal.util.MethodInvoker.invoke(MethodInvoker.java:63) >>> at >>> >>> org.apache.tapestry5.ioc.internal.util.LoggingInvokableWrapper.invoke(LoggingInvokableWrapper.java:43) >>> at >>> >>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82) >>> ... 116 more >>> Caused by: java.lang.NoSuchMethodError: >>> org.hibernate.SessionFactory.openSession()Lorg/hibernate/Session; >>> at >>> >>> org.apache.tapestry5.internal.hibernate.HibernateSessionSourceImpl.create(HibernateSessionSourceImpl.java:71) >>> at $HibernateSessionSource_142885567b0746b3.create(Unknown Source) >>> at >>> >>> org.apache.tapestry5.internal.hibernate.HibernateSessionManagerImpl.<init>(HibernateSessionManagerImpl.java:31) >>> at >>> >>> org.apache.tapestry5.hibernate.modules.HibernateCoreModule.buildHibernateSessionManager(HibernateCoreModule.java:96) >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> at >>> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) >>> at >>> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>> at java.lang.reflect.Method.invoke(Method.java:606) >>> at >>> >>> org.apache.tapestry5.ioc.internal.util.MethodInvoker.invoke(MethodInvoker.java:52) >>> >>> >>> Surprisingly, the database structure is correctly read, so >>> SchemaValidator >>> and TableMetaData had no issues at all on startup... >>> >>> >>> >>> >>> >>> >>> >>> Forcing Tapestry to use 5.3.8 just for Hibernate related libs results in: >>> >>> Caused by: java.lang.RuntimeException: Failure loading Tapestry IoC >>> module >>> class org.apache.tapestry5.hibernate.HibernateCoreModule: Error invoking >>> service binder method >>> org.apache.tapestry5.hibernate.HibernateCoreModule.bind(ServiceBinder) >>> (at >>> HibernateCoreModule.java:45): org/apache/tapestry5/ioc/MethodAdvice >>> at >>> org.apache.tapestry5.ioc.RegistryBuilder.add(RegistryBuilder.java:164) >>> at >>> >>> org.apache.tapestry5.ioc.IOCUtilities.addModulesInList(IOCUtilities.java:132) >>> at >>> >>> org.apache.tapestry5.ioc.IOCUtilities.addModulesInManifest(IOCUtilities.java:105) >>> ... 49 more >>> Caused by: java.lang.RuntimeException: Error invoking service binder >>> method >>> org.apache.tapestry5.hibernate.HibernateCoreModule.bind(ServiceBinder) >>> (at >>> HibernateCoreModule.java:45): org/apache/tapestry5/ioc/MethodAdvice >>> at >>> >>> org.apache.tapestry5.ioc.internal.DefaultModuleDefImpl.bind(DefaultModuleDefImpl.java:624) >>> at >>> >>> org.apache.tapestry5.ioc.internal.DefaultModuleDefImpl.<init>(DefaultModuleDefImpl.java:148) >>> at >>> org.apache.tapestry5.ioc.RegistryBuilder.add(RegistryBuilder.java:123) >>> at >>> org.apache.tapestry5.ioc.RegistryBuilder.add(RegistryBuilder.java:161) >>> ... 51 more >>> Caused by: java.lang.NoClassDefFoundError: >>> org/apache/tapestry5/ioc/MethodAdvice >>> at java.lang.Class.getDeclaredConstructors0(Native Method) >>> at java.lang.Class.privateGetDeclaredConstructors(Class.java:2585) >>> at java.lang.Class.getConstructors(Class.java:1522) >>> at >>> >>> org.apache.tapestry5.ioc.internal.util.InternalUtils.findAutobuildConstructor(InternalUtils.java:562) >>> at >>> >>> org.apache.tapestry5.ioc.internal.ServiceBinderImpl.createStandardConstructorBasedObjectCreatorSource(ServiceBinderImpl.java:146) >>> at >>> >>> org.apache.tapestry5.ioc.internal.ServiceBinderImpl.createObjectCreatorSourceFromImplementationClass(ServiceBinderImpl.java:129) >>> at >>> >>> org.apache.tapestry5.ioc.internal.ServiceBinderImpl.flush(ServiceBinderImpl.java:96) >>> at >>> >>> org.apache.tapestry5.ioc.internal.ServiceBinderImpl.bind(ServiceBinderImpl.java:250) >>> at >>> >>> org.apache.tapestry5.hibernate.HibernateCoreModule.bind(HibernateCoreModule.java:47) >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> at >>> >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) >>> at >>> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>> at java.lang.reflect.Method.invoke(Method.java:606) >>> at >>> >>> org.apache.tapestry5.ioc.internal.DefaultModuleDefImpl.bind(DefaultModuleDefImpl.java:599) >>> ... 54 more >>> Caused by: java.lang.ClassNotFoundException: >>> org.apache.tapestry5.ioc.MethodAdvice >>> at >>> >>> org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1293) >>> at >>> >>> org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1145) >>> ... 68 more >>> >>> >>> Any other idea? >>> >>> Jens >>> >>> >>> >>> >>> >>> Am 11.01.16 um 17:08 schrieb Thiago H de Paula Figueiredo: >>> >>> On Mon, 11 Jan 2016 14:06:15 -0200, Jens Breitenstein < >>> >>>> mailingl...@j-b-s.de> wrote: >>>> >>>> Hi All, >>>> Hi! >>>> >>>> I am migrating an application from T5.3.8 to T5.4. In the past the >>>> >>>>> application was based one Hibernate 3x but T5.4 seems to make use of >>>>> Hibernate 4 explicitly (correct me if I am wrong). So currently I am >>>>> facing >>>>> the following exception: >>>>> >>>>> I'd try forcing the tapestry-hibernate version to 5.3.8 and leaving >>>> everything else at 5.4.0 and see whether it works. >>>> >>>> >>>> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > >