在hibernate上
@oneToOne, @ManyToOne, @OneToMany 这些注解上可以设置
fetch = FetchType.LAZY
但是如果在这些注解上在加上
@NotFound(action = NotFoundAction.IGNORE)
则懒加载失效, 会变成立即加载. (在程序中会带来很可怕的效应). 产生n+1查询.
所以要使用fetch = FetchType.LAZY时, 要把 @NotFound给去掉
估计hibernate在看到 @NotFound时, 会先去数据库里看看是不是有这数据, 这样就产生了查询, 让懒加载失效了.
以上在hibernate 4.3.6版本上有这个问题. 不知道是不是hibernate自身的问题
具体可参见
http://stackoverflow.com/questions/15666042/hibernate-manytoone-n1-issue
http://stackoverflow.com/questions/222453/how-to-stop-hibernate-from-eagerly-fetching-many-to-one-associated-object
也有好些中文的:
http://www.cfanz.cn/?c=article&a=read&id=74847
http://duanfei.iteye.com/blog/2090469
http://blog.csdn.net/beyond667/article/details/8836805
ps:
用好hibernate真心不容易. 要是项目组里没有hibernate专家, 这东西还是不要用了. 前期好像可能省不少时间, 后期真是要命.
分享到:
相关推荐
本代码为hibernate的manytoone的代码 博文链接:https://shaqiang32.iteye.com/blog/201307
第一阶段的工程 博文链接:https://selvemen.iteye.com/blog/458615
@Basic(fetch = FetchType.LAZY) String getDetailedComment() { ... } // persistent property @Temporal(TemporalType.TIME) java.util.Date getDepartureTime() { ... } // persistent property @Enumerated(Enum...
Hibernate的两个类设置了manyToOne之后,在查询的时候, 由于N 对1的一方默认的fetch=FetchType.EAGER,所以会 把被关联的对象一起取出来
fetch指定是否延迟加载,值为FetchType.LAZY表示延迟,为FetchType.EAGER表示立即加载 * 方法一 使用这种配置,在为“一端”添加“多端”时,不会修改“多端”的外键。在“一端”加载时,不会得到“多端”。如果使用...
@ManyToOne(fetch = FetchType.LAZY) @JoinTable(name="Test_Tree_Forest", joinColumns = @JoinColumn(name="tree_id"), inverseJoinColumns = @JoinColumn(name="forest_id") ) public ForestType ...
SpringBoot-SpringData-ManyToOne,博文地址:http://blog.csdn.net/ABAP_Brave/article/details/52850062
详解Hibernate cascade级联属性的CascadeType的用法 cascade(级联) ...cascade表示级联操作,在hibernate配置注解@OneToOne,@OneToMany,@ManyToMany,@ManyToOne中的属性。 例如: @ManyToOne(c
没问题,您可能仍然不想弄乱SQL,JPA谓词,安全性以及所有这些我猜想的东西。 从技术角度来看,我尝试将简单的语法编译为JPA谓词。例子/搜索过滤器=(brand.name:“奥迪”或brand.name:“路虎”)2和(年> 2018或...
o @ManyToOne o @MapKey o @MappedSuperclass • N o @NamedNativeQueries o @NamedNativeQuery o @NamedQueries o @NamedQuery • O o @OneToMany o @OneToOne o @OrderBy • P o @PersistenceContext o @...
@ManyToOne(cascade = {CascadeType.ALL}, fetch = FetchType.LAZY) @JoinColumn(name = "personid", unique = false, nullable = true, insertable = true, updatable = true) public Person getPerson() { ...
基于工具使用 SQL 插入中文有乱码问题,设置客户端字符集 gb2312 配置 环境变量 NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK 弹窗了,就表示成功了! 工具补充: Navicat Premium 安装和使用 ...
0.0.1-SNAPSHOT.jar运行前端: ng serve -o文件Github项目-https: 主要困难业务/域规则,已多次更改在后端建立关系@OneToMany-@ManyToOne 后端全球CORS 后端验证组织Dockerfile和docker-compose.yml
演示与范例 我用来测试新功能并创建一些基本代码的项目的集合。 随着时间的流逝,我将推动更多项目到这里。 1.实体关系 Spring Boot和JPA @OneToMany和@ManyToOne的示例(处理无限递归,请参见[1.1]) 使用jUnit...
主要介绍了MySQL使用外键实现级联删除与更新的方法,详细分析了mysql数据库与表的创建、数据插入、查询以及外链的使用与级联操作相关技巧,需要的朋友可以参考下
onetomany onetoone manytoone manytomany xml的
迁移,typeorm,实体和postgres数据库,带有tsyringe的自动依赖项注入,OneToMany更改,ManyToMany,ManyToOne,错误处理和单元测试。 在此挑战中,在NodeJs中创建了一个带有Typescript的应用程序,该应用程序应...
javax.persistence.criteria.Fetch.class javax.persistence.criteria.FetchParent.class javax.persistence.criteria.From.class javax.persistence.criteria.Join.class javax.persistence.criteria.JoinType....