zoukankan      html  css  js  c++  java
  • 使用hibernate从一方获取多方信息时报错:org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role

    引起原因:hibernate加载关联对象的方式有懒加载方式和立即加载方式。 如果在多对一的配置中没有指定加载方式,而一对多的配置中指定了懒加载方式,因此在获取一方是可获取到值,而获取多方时session已经关闭,这时候获取不到多方信息,因此报错。

    解决方法:将一对多的加载方式改为立即加载,将多对一的加载改为懒加载。

    将一对多的注解配置改为如下所示:

    @OneToMany(mappedBy="topicEntity",fetch = FetchType.EAGER)
    public List<AnswerEntity> getAnswerList() {
    return answerList;
    }
    public void setAnswerList(List<AnswerEntity> answerList) {
    this.answerList = answerList;
    }

    将多对一的注解配置改为如下所示:

    @ManyToOne(fetch=FetchType.LAZY,optional=false)
    @JoinColumn(name="topicId")
    public TopicEntity getTopicEntity() {
    return topicEntity;
    }
    public void setTopicEntity(TopicEntity topicEntity) {
    this.topicEntity = topicEntity;
    }

  • 相关阅读:
    dfs 与 剪枝
    杭电OJ1789、南阳OJ236(贪心法)解题报告
    多边形面积问题(hdoj2036)
    retain copy(浅复制) mutablecopy (深复制)
    IOS开发的目录结构
    UITableView 委托方法总结
    ios block
    UITableView 学习笔记
    iso socket基础2
    ios socket(基础demo)
  • 原文地址:https://www.cnblogs.com/ninicwang/p/7680080.html
Copyright © 2011-2022 走看看