• jpa 报错: Unable to build Hibernate SessionFactory; nested exception is org.hibernate.loader.MultipleBagFetch


    model代码如下:

    @OneToMany(fetch=FetchType.EAGER, cascade = CascadeType.ALL)
        @Where(clause="isValid=1 and orderType=1")
        @JoinColumn(name = "orderUUID", referencedColumnName = "JobShippingOrderUUID",insertable = false, updatable = false)
        public List<BoJobgoods> getBoJobgoodsList() {
            return boJobgoodsList;
        }
    
        @OneToMany(fetch=FetchType.EAGER, cascade = CascadeType.ALL)
        @Where(clause="isValid=1 and orderType=1")
        @JoinColumn(name = "orderUUID", referencedColumnName = "JobShippingOrderUUID",insertable = false, updatable = false)
        public List<BoJobcontainer> getBoJobcontainerList() {
            return boJobcontainerList;
        }

    启动就报错 Unable to build Hibernate SessionFactory; nested exception is org.hibernate.loader.MultipleBagFetch。。。。。。。。。。

    原因是同一个model里不能有二个 FetchType.EAGER 

    于是把另一个改成:FetchType.LAZY 再次启动成功

    但是访问接口又报另一个错:

    Could not write JSON: failed to lazily initialize a collection of role: com.kintech.model.domain.bo.BoJobshippingorder.boJobgoodsList, could not initialize proxy - no Session; nested exception is com.fasterxml.jackson.databind.JsonMappingException: failed to lazily initialize a collection of role: 

    于是再改把后码的list字段添加@Fetch(FetchMode.SUBSELECT)注解代码如下:

    @OneToMany(fetch=FetchType.EAGER)
        @Where(clause="isValid=1 and orderType=1")
        @JoinColumn(name = "orderUUID", referencedColumnName = "JobShippingOrderUUID",insertable = false, updatable = false)
        public List<BoJobgoods> getBoJobgoodsList() {
            return boJobgoodsList;
        }
    
        public void setBoJobgoodsList(List<BoJobgoods> boJobgoodsList) {
            this.boJobgoodsList = boJobgoodsList;
        }
    
        @OneToMany(fetch=FetchType.EAGER)
        @Fetch(FetchMode.SUBSELECT)
        @Where(clause="isValid=1 and orderType=1")
        @JoinColumn(name = "orderUUID", referencedColumnName = "JobShippingOrderUUID",insertable = false, updatable = false)
        public List<BoJobcontainer> getBoJobcontainerList() {
            return boJobcontainerList;
        }

     再运行,完全搞定



    欢迎加入JAVA技术交流QQ群:179945282

    欢迎加入ASP.NET(C#)交流QQ群:17534377


  • 相关阅读:
    Python字符串的切片
    Python字符串的劈分
    Python函数的参数
    接口幂等性
    Kafka 中的设计思想
    Stream特性
    API接口的安全设计验证:ticket,签名,时间戳
    linux命令
    Java注解和反射
    su 和 sudo
  • 原文地址:https://www.cnblogs.com/q149072205/p/14819175.html
Copyright © 2020-2023  润新知