转换为同一个类时出现java.lang.ClassCastException - ClassLoader问题

时间:2018-01-30 15:04:39

标签: java spring hibernate spring-boot

所以,我使用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依赖之后,问题就消失了。现在,问题是我不能再热插拔资源了。以前有人遇到过这样的问题吗?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,只是通过使用正确的SessionFactory版本来解决了,在我的情况下,我将sessionFactory从以下版本更新为:org.springframework.orm.hibernate4.LocalSessionFactoryBeanorg.springframework.orm.hibernate5.LocalSessionFactoryBean (我正在使用hibernate5)

希望有帮助,