• hibernate的对象/关系映射结果为空,exists查不到值的问题-20190823


    1: hibernate的对象/关系映射

    情景:在使用@onetotone/@manytonone时关联结果为空

    原因:在使用这个注解的时候,默认的时crossjoin(交叉连接),在进行查询时以及排序时用到了注解关联的属性,如果这个属性为空就会导致查空

    解决:注意关联过程中使用到的属性一定要存在

    拓展:

    1 @OneToOne(fetch = FetchType.LAZY)--懒加载
    2 @JoinColumns({
    3             @JoinColumn(name = "主键", referencedColumnName = "外键", insertable = false, updatable = false)
    4  insertable = false, updatable = false) })
    5     @NotFound(action = NotFoundAction.IGNORE)
    6 private Model model;--注意,使用懒加载,要在MOdel的类上加入这个注解 @JsonIgnoreProperties(value = { "hibernateLazyInitializer", "handler", "fieldHandler" })

    2 sql查询时使用exists查空

    情景:使用exists进行查询,总是查到相反的结果

    原因:对exists的条件执行不清楚

    解决:

    exists: select * from a where exists (select 1 from b where b.id = a.id)
    
    翻译过来: select 1 from b where b.id = (a.id / 1/ 2/ 3) 循环匹配的是后面的条件,也就是说exists 外面的关联条件要放后面

    关于exists这类函数,本质上还是一个子查询,sql执行就是先执行子查询。

    拓展

    可以看看这篇文章

  • 相关阅读:
    带参的方法
    类的无参方法
    类和对象
    关于线程间的通信的几个解决事例
    一个简单的邮件发送
    关于process
    关于java的static语句块
    关于struts2拦截器获取页面参数
    hexo github pages 首页不展示,出现代码怎么办
    使用Hexo搭建个人博客(三)
  • 原文地址:https://www.cnblogs.com/xiaoshahai/p/11397784.html
Copyright © 2020-2023  润新知