zoukankan      html  css  js  c++  java
  • org.hibernate.LazyInitializationException异常解决办法

    org.hibernate.LazyInitializationException异常
    failed to lazily initialize a collection...的解决方案
    使用hibernate从一方获取多方信息的时候发生

    org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.haowei.carmanager.model

    这个异常与hibernate加载关联对象的2种方式有关,一个是懒加载方式,一个是立即加载方式.

    一. 原先的配置
    1. 一方中的多方:
    @OneToMany(mappedBy = "carFirm",cascade = CascadeType.ALL,fetch = FetchType.LAZY)
    private Set<CarBrandType> brandTypeSet;//汽车厂商与汽车品牌为一对多的关系
    2. 多方中的一方
    @ManyToOne(cascade = CascadeType.ALL,optional = false)
    @JoinColumn(name="brandid",referencedColumnName = "carfirm_id")
    private CarFirm carFirm; //汽车厂商与汽车品牌为一对多的关系
    注意在多方中的一方的配置没有指定加载方式,而且一方中的多方是懒加载,因此在获取一方的时候一方是获取到了,但是再获取多方的时候session已经关闭了,这时候会获取不到多方信息,因此报错.

    二. 解决方式
    1. 一方中的多方
    @OneToMany(mappedBy = "carFirm",cascade = CascadeType.ALL,fetch = FetchType.EAGER)
    private Set<CarBrandType> brandTypeSet;//汽车厂商与汽车品牌为一对多的关系
    2. 多方中的一方
    @ManyToOne(cascade = CascadeType.ALL,optional = false,fetch = FetchType.LAZY)
    @JoinColumn(name="brandid",referencedColumnName = "carfirm_id")
    private CarFirm carFirm; //汽车厂商与汽车品牌为一对多的关系
    就是将一对多中的多方的加载方式改为立刻加载,而一对多中的一方改为懒加载即可.
    ————————————————
    版权声明:本文为CSDN博主「孙一一」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/syc000666/article/details/94985615

  • 相关阅读:
    Props VS State
    Component VS PureComponent
    Webpack loaders
    近期需要学习的技术
    jQuery源码解读三选择器
    jQuery源码解读二(apply和call)
    jQuery源码解读一
    Web语义化
    如何用python语言撸出图表系统
    抓取android系统日志_记录一次定位app闪退故障
  • 原文地址:https://www.cnblogs.com/muhy/p/11801794.html
Copyright © 2011-2022 走看看