【发布时间】:2013-03-15 09:26:35
【问题描述】:
您好,我是 Hibernate 的新手。
我使用 Hibernate Tools 生成了一个数据库访问模块。生成器生成 DAOS 和 Hibernate Bean 的代码。
当我在一个简单的 Java 应用程序中测试这个模块时,一切正常,但是当我在一个 Spring Web 应用程序中测试它时,我得到了一个非常奇怪的错误。由于我的模块是一个独立的 jar,它应该访问数据库而不考虑在简单的 Java 应用程序或 Web 应用程序中执行的情况。我的网络应用程序的代码是:
@Controller
@RequestMapping("/")
public class Controller implements ApplicationContextAware
{
private ApplicationContext applicationContext;
@RequestMapping(value = "/purchased/songs", method = RequestMethod.GET)
public String home(Model model)
{
SessionManager.startOperation();
ChargeTryDAOBase ctdb=new ChargeTryDAOBase();
List <ChargeTry> data=ctdb.findByRemoteId("dsfsdfsdf8");
SessionManager.endOperation();
model.addAttribute("result", "data" );
return "home";
}
@Override
public void setApplicationContext(ApplicationContext arg0) throws BeansException
{
this.applicationContext = arg0;
}
}
在 Tomcat 上运行此代码时出现以下错误:
org.springframework.web.util.NestedServletException: Handler processing
nested exception is java.lang.NoSuchMethodError:
org.hibernate.SessionFactory.getCurrentSession()Lorg/hibernate/Session;
.....
java.lang.NoSuchMethodError:
org.hibernate.SessionFactory.getCurrentSession()Lorg/hibernate/Session;
当我更改一些 Hibernate 依赖项时,我收到以下错误:
java.lang.IllegalStateException: Could not locate SessionFactory in JNDI
当我在一个简单的 Java 应用程序中测试上述代码时,一切正常。
这是一个spring-hibernate配置问题吗?
感谢您的帮助。
【问题讨论】:
-
您是否在 Spring 配置文件中配置了所有必需的 Hibernate 属性?也可以发一下吗?
-
我的 Hibernate 属性文件是:
-
我有一个封装了所有数据库访问功能的 jar,在普通的 Java 应用程序中我只需要添加这个模块来访问数据库,它可以从头开始工作,但使用 Spring 就不行了。跨度>
-
您必须为此使用 Spring Hibernate 配置。
-
在哪里可以找到在 Spring 中配置我的访问模块的示例?我正在使用 Hibernate 4 和 Tomcat 7。谢谢。
标签: spring hibernate configuration