无Mi小程序音乐项目开发实战coderwhy梵蒂冈
Spring JPA 1屡次查询存在死循环问题
无Mi小程序音乐项目开发实战coderwhy梵蒂冈
download:https://www.zxit666.com/4314/
的一切配置都是正确的,除了没有方法获取数据,有一个无限循环。
问题和处理计划由于运用了lombak的@Data
由于我们运用了@Data让lombok定义一切@ToString默许状况下,它将指向类名,并且它将与每个字段相关联。
比方用lazy @OneToMany办法调用hashCode()时,fetch可能会有一切的实体类,这可能会对应用的运转形成十分大的性能问题。
同时,假如在事务外运用,可能会得到LazyInitializationException。
假如您查询一个用户实体并打印它,打印将调用toString()办法,并且在toString()办法中有相关的Dept对象。所以用户和子对象之间的两个对象相互调用并打印,构成递归调用,最后堆栈溢出。
基于以上思索,我们以为@EqualsAndHashCode和@Data不应该应用于JPA的实体类。
@ToString还是能够用的,由于我们能够用@ToString。Exclude设置不需求的字段,或者@ tostring(onlyExplicitlyIncluded = true)移除类。
关于非惰性字段,我们能够运用@ToString。
包括注释。例如,我们的处理计划是只在JPA实体类中运用。
@Getter@Setter注释。基于以上缘由,这也是很多人倡议运用Lombok的缘由。
我们的了解还是能够用的,不要滥用,不要试图保管一个@Data end。