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


  • 相关阅读:
    开发JQuery插件标准结构
    JavaScript中的正则表达式
    IntelliJ IDEA 之Web的Facets/Artifacts(八)
    IntelliJ IDEA 快捷键(七)
    IntelliJ IDEA 集成各种插件(六)
    [转]VS2010几款超赞的扩展辅助工具总结
    创建和使用动态链接库(转)vs2008 vs2010
    springboot 自定义Repository
    springboot redis 缓存对象
    springboot 集成spring-session redis 实现分布式session
  • 原文地址:https://www.cnblogs.com/q149072205/p/14346606.html
Copyright © 2011-2022 走看看