【发布时间】:2012-09-10 21:23:24
【问题描述】:
为了学习目的,我一直在为我的 CRUD 演示项目使用 struts2-fullhibernatecore-plugin-2.2.2-GA。以下是我得到的错误,并且不同的休眠依赖项试图使其工作。见下文
错误
java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session;
com.googlecode.s2hibernate.struts2.plugin.util.HibernateSessionFactory.createAndTestSessionFactory(HibernateSessionFactory.java:284)
com.googlecode.s2hibernate.struts2.plugin.util.HibernateSessionFactory.rebuildSessionFactory(HibernateSessionFactory.java:227)
com.googlecode.s2hibernate.struts2.plugin.util.HibernateSessionFactory.getNewSession(HibernateSessionFactory.java:155)
我从这个帖子的回答中明白了 Click Here
比我启动不同的 maven 依赖来检查使用插件的休眠版本并发现
不适用于以下版本
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.1.6.Final</version>
</dependency>
在这个版本之前工作
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>3.6.10.Final</version>
</dependency>
问题:显然不想使用 Hibernate3 那么有没有办法可以将最新的 hibernate4+ 与 struts2-fullhibernatecore-plugin-2.2.2-GA 一起使用?
问题: struts2中hibernate使用最广泛的DI是什么。如果上述插件不起作用,我应该选择 Spring 还是 google juice?除了 viewpattern 之外,没有看到任何其他可行的管理休眠会话的解决方案,但是说它的反模式并且有很多缺点。
【问题讨论】:
-
正如您链接到的答案所示,Hibernate 4 与 Hibernate 3 有一些 API 不兼容,所以不,Hibernate 4 与您尝试使用的插件版本不兼容。
-
@steven-benitez,谢谢。我应该怎么做?你能回答我最后一个问题吗?希望得到更多反馈。
-
@steven-benitez,我认为 Open Session in View 模式是最常用的方式?
-
Open Session in View 是一个很好的模式。此外,对于 DI,我更喜欢 Google Guice,但对于每个人来说,我更喜欢他自己的。
-
@steven-benitez,您在 Google Guice 上是否有任何代码示例,其中包含用于 DI 的 hibernate?我正在寻找它。你能分享你自己的实现吗?谢谢
标签: hibernate jakarta-ee struts2 struts2-s2hibernate