所以,我使用Hibernate和Spring MVC来构建一个webapp。我一直在不同的表上运行一些查询,除了一个表外,所有查询都按预期工作。我正在研究这个问题一段时间,并意识到这是一个与加载同一类的两个不同的Java类加载器相关的问题。
我通过将webapp部署到Tomcat服务器来管理问题,但是当我尝试使用Spring Boot时,它根本无法工作。现在,我可以继续开发,但我宁愿使用Spring Boot,而且我觉得我只是忽略了一个可能在某种程度上影响我的问题。导致一切的方法如下。
str
这是我详细的堆栈跟踪。
public Usuario findById(String userId) {
Session session = factory.getCurrentSession();
Transaction tx = session.beginTransaction();
try {
return session.get(Usuario.class, userId);
} catch (Exception e) {
e.printStackTrace();
return null;
}
finally {
tx.commit();
}
}
虽然,我已经知道问题是什么,但我仍然无法在任何地方找到解决方案。我尝试了很多我找到的方法,但无济于事。错误尚未修复。如果您需要更多信息,请告诉我。
更新
以下问题getting ClassCastException when calling getSession().get() in Hibernate虽然类似但并未解决我的问题。我想要实现的是能够使用Spring Boot运行它。我设法让它在Tomcat服务器上运行,但Spring Boot刚刚工作。
更新#2
在进一步挖掘之后,我意识到问题是使用Spring Dev Tools的结果。在评论出maven依赖之后,问题就消失了。现在,问题是我不能再热插拔资源了。以前有人遇到过这样的问题吗?
答案 0 :(得分:0)
我遇到了同样的问题,只是通过使用正确的SessionFactory
版本来解决了,在我的情况下,我将sessionFactory从以下版本更新为:org.springframework.orm.hibernate4.LocalSessionFactoryBean
:org.springframework.orm.hibernate5.LocalSessionFactoryBean
(我正在使用hibernate5)
希望有帮助,