作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在下面有这个类,当我调用 addDataException 时,它会进入数据库并在每次添加时捕获所有异常。有人可以解释一下这个问题以及阻止这个问题的解决方法吗?
@Entity
public class Tenant extends BaseEntity {
@OneToMany(mappedBy = "tenant", fetch = FetchType.LAZY, orphanRemoval = true)
@Cascade({CascadeType.ALL})
private Set<DataException> dataExceptions = new HashSet<>();
public void addDataException(DataException dataException) {
dataExceptions.add(dataException);
dataException.setTenant(this);
}
日志
.
.
.
20:21:47.091 [scheduler-1] DEBUG org.hibernate.loader.Loader - Result set row: 944
20:21:47.091 [scheduler-1] DEBUG org.hibernate.loader.Loader - Result row: EntityKey[com.test.DataException#74645]
20:21:47.093 [scheduler-1] DEBUG org.hibernate.loader.Loader - Found row of collection: [com.test.dataExceptions#70]
20:21:47.094 [scheduler-1] DEBUG org.hibernate.loader.Loader - Result set row: 945
.
.
.
最佳答案
您正在使用Set
并且来自Set
documentation我们得到:
A collection that contains no duplicate elements. More formally, sets contain no pair of elements e1 and e2 such that e1.equals(e2), and at most one null element. As implied by its name, this interface models the mathematical set abstraction.
为了检查新的DataException
是否可以添加到集合中,需要首先从数据库加载它。由于这个原因,如果您在 Set
中执行 add
操作,它将触发数据加载。
针对您的情况
如果您只是对存储新的 DataException
感兴趣,也许您可以简单地存储 DataException
对象,如果它已经存储,您将收到 PK 违规,但是您将避免选择加载此类集合。
关于java - Hibernate Lazy/Eager 列表总是通过新添加来获取整个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25232117/
我是一名优秀的程序员,十分优秀!