Hibernate项目,突然报错,找到报错对应行数的代码调试了却没发现问题,后来还好同事火眼金睛一眼看到了截图中湖蓝色背景的ConnectionHandler才发现问题进而找到了问题的根源。
/**
* 关联合同
*/
@OneToMany(mappedBy=“customerInfo”, fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)
//@JoinColumn(name=“contractId”)
private Set contractInfos = new HashSet();
问题就出在注解中的fetch = FetchType.LAZY,改为fetch = FetchType.EAGER后完美运行!
Hibernate的注解确实是用起来有点复杂,所以简单普及下FetchType.LAZY和FetchType.EAGER的区别:
FetchType.LAZY:懒加载,加载一个实体时,定义懒加载的属性不会马上从数据库中加载。
FetchType.EAGER:急加载,加载一个实体时,定义急加载的属性会立即从数据库中加载。
建议一对多关联时用急加载。底层的原理弄的不是蛮清楚,有大神知道的话可以在底下普及下,欢迎指正交流。
Hibernate中ConnectionHandler.process报错
最新推荐文章于 2024-12-19 08:15:00 发布