zoukankan      html  css  js  c++  java
  • jpa/hibernet的实体entity配置Set<>顺序一样,用List<>出现重复数据的问题解决办法

    在用JPA时碰到一个坑爹问题在实体entity中配置Set<>后查出来的数据每次结果不一样,代码如下:

    List<OrderDetails> orderDetailsList=new ArrayList<>();
    
        @OneToMany(fetch = FetchType.EAGER)
        @JoinColumn(name = "orderId", referencedColumnName = "orderId", insertable = false, updatable = false)
        public List<OrderDetails> getOrderDetailsList() {
            return orderDetailsList;
        }

    然后换成List,但是查出来的数据很多重复的数据,代码如下:

    List<OrderDetails> orderDetailsList=new ArrayList<>();
    
        @OneToMany(fetch = FetchType.EAGER)
        @NotFound(action = NotFoundAction.IGNORE)
        @JoinColumn(name = "orderId", referencedColumnName = "orderId", insertable = false, updatable = false)
        public List<OrderDetails> getOrderDetailsList() {
            return orderDetailsList;
        }

    最后解决办法, 再添加一个注解@Fetch(FetchMode.SUBSELECT)

    代码如下:

    List<OrderDetails> orderDetailsList=new ArrayList<>();
        
        @OneToMany(fetch = FetchType.EAGER)
        @Fetch(FetchMode.SUBSELECT)
        @NotFound(action = NotFoundAction.IGNORE)
        @JoinColumn(name = "orderId", referencedColumnName = "orderId", insertable = false, updatable = false)
        public List<OrderDetails> getOrderDetailsList() {
            return orderDetailsList;
        }

    @Fetch(FetchMode.SUBSELECT)这个注解的意思 是先查当前Entity 生成一个SQL,然后这个OneToMany再单独生成一个sql再去查询。可以看生成的SQL日志可以看出来。。

    参考:https://www.cnblogs.com/fashflying/p/5147473.html



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

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


  • 相关阅读:
    JS 字符串
    JS 变量
    JS 数据类型与运算符
    HTML加载动画实现
    DOM Document.readyState 属性
    html中怎么去掉input获取焦点时候的边框
    原生js获取子元素
    CSS3 Animation动画
    slice,substr和substring的区别
    a链接嵌套无效,嵌套链接最优解决办法
  • 原文地址:https://www.cnblogs.com/q149072205/p/14346606.html
Copyright © 2011-2022 走看看