【问题标题】:Class cast exception using hibernate使用休眠的类转换异常
【发布时间】:2016-07-13 06:33:47
【问题描述】:

我只是想检索数据列表,但使用下面的代码为什么我得到类转换异常...

public List<TbDiscussionForumAnswere> findTbDiscussionForumAnswerebyforumQuestionId(Integer forumQuestionId) {
session = sessionFactory.getCurrentSession();
TbDiscussionForumAnswere TbDiscussionForumAnswere = (TbDiscussionForumAnswere)session.createCriteria(TbDiscussionForumAnswere.class)                .add(Restrictions.eq("forumQuestionId.forumQuestionId", forumQuestionId));
return (List<TbDiscussionForumAnswere>) TbDiscussionForumAnswere.getTbDiscussionForumAnswereCollection();
}

上面的方法给了我下面的异常

java.lang.ClassCastException: org.hibernate.internal.CriteriaImpl cannot be cast to com.medikm.entity.TbDiscussionForumAnswere

谢谢你

【问题讨论】:

  • 您查看我们的答案了吗?请接受答案。谢谢!

标签: java hibernate


【解决方案1】:

您正在创建 Criteria 对象而不是 TbDiscussionForumAnswere 对象。这是一个正确的错误信息。 您使用这个Criteria 类来执行查询。您应该将其转换为 Criteria

【讨论】:

    【解决方案2】:

    session.createCriteria(TbDiscussionForumAnswere.class).add(Restrictions.eq("forumQuestionId.forumQuestionId", forumQuestionId)); 返回 Critera not 和对象 TbDiscussionForumAnswere

    因此您必须将行更改为:

    Critera critera  = (Critera)session.createCriteria(TbDiscussionForumAnswere.class).add(Restrictions.eq("forumQuestionId.forumQuestionId", forumQuestionId));
    

    【讨论】:

      【解决方案3】:

      我使用下面的代码,这对我来说很好,谢谢大家的回答

      List<TbDiscussionForumAnswere> tbDiscussionForumAnswereList = session.createCriteria(TbDiscussionForumAnswere.class)
      .add(Restrictions.eq("forumQuestionId.forumQuestionId",forumQuestionId))
      .setFetchMode("forumQuestionId", FetchMode.LAZY)
      .list();
      

      【讨论】:

      • 请接受至少一个答案,以便问题被视为已结束。
      • 还可以考虑对帮助您解决问题的答案进行投票。这是给那些花时间帮助你的人的“奖励”!问候
      猜你喜欢
      • 2015-08-15
      • 2016-08-05
      • 1970-01-01
      • 2014-06-09
      • 2023-03-08
      • 2011-02-14
      • 2011-09-25
      • 2012-12-27
      • 2014-08-22
      相关资源
      最近更新 更多