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
>
>

Reply via email to