jpa使用manyToOne(opntional=true)踩过的坑及解决
jpa使用manyToOne(opntional=true)踩坑
@ManyToOne用于一对多的情况
(默认情况下是懒加载的,没必要去配置哦)如:一个account可以对应多个accountPrivilege
@Entity
@Table(name = ACCOUNT_PRIVILEGE)
public class AccountPrivilege extends EntityId {
// 账号
@ManyToOne(optional = false)
@JoinColumn(name = ACCOUNT_PRIVILEGE_ACCOUNT, nullable = false)
private Account account;
}
但是加上@ManyToOne(optional=false)出现了一些问题。
jpa将数据库那个字段默认置为0,在查询时,数据库找不到account.id=0的记录!!
通过查阅一些资料,发现:
optional属性是定义该关联类是否必须存在,值为false 时,关联类双方都必须存在,如果关系被维护端不存在,查询的结果为null。
值为true 时, 关系被维护端可以不存在,查询的结果仍然会返回关系维护端,在关系维护端中指向关系被维护端的属性为null。optional属性的默认值是true。
optional 属性实际上指定关联类与被关联类的join 查询关系,如optional=false 时join 查询关系为inner join, optional=true 时join 查询关系为left join。
在我们不保证该字段关联的记录一定存在的情况下,使用@ManyToOne或@ManyToOne(optional=true)是比较方便的。
在我把@ManyToOne(optional=false)改为@ManyToOne后,jpa将数据库那个字段默认置为null。
@manytoone设置为optional=true不起作用
@manytoone
optional属性的默认值是true。
optional 属性实际上指定关联类与被关联类的join 查询关系,如optional=false 时join 查询关系为inner join, optional=true 时join 查询关系为left join。
但是实际运行中,语句一直为innerjoin 设置为optional=true不起作用
原因
dc.createAlias("org", "org"); 本来写在User user = UserUtils.getUser(); 下面,如果去掉则是正确的
public Page<Site> find(Page<Site> page, Site siteMain) {
DetachedCriteria dc = siteMainDao.createDetachedCriteria();
// 判断是否是主站、超级管理员
User user = UserUtils.getUser();
return siteMainDao.find(page, dc);
}
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
2023最新版本idea用maven新建web项目(亲测不报错)
这篇文章主要给大家介绍了关于2023最新版本idea用maven新建web项目,Maven是当今Java开发中主流的依赖管理工具,文中介绍的步骤亲测不报错,需要的朋友可以参考下2023-07-07
详解利用Spring的AbstractRoutingDataSource解决多数据源的问题
本篇文章主要介绍了详解利用Spring的AbstractRoutingDataSource解决多数据源的问题。具有一定的参考价值,有兴趣的可以了解一下。2017-03-03
Java中break、continue、return在for循环中的使用
这篇文章主要介绍了break、continue、return在for循环中的使用,本文是小编收藏整理的,非常具有参考借鉴价值,需要的朋友可以参考下2017-11-11
Java C++ leetcode执行一次字符串交换能否使两个字符串相等
这篇文章主要为大家介绍了Java C++ leetcode1790执行一次字符串交换能否使两个字符串相等,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-10-10
SpringBoot在自定义类中调用service层mapper层方式
这篇文章主要介绍了SpringBoot在自定义类中调用service层mapper层方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2025-03-03


最新评论