今天发现fetch = FetchType.LAZY这个设置无效,在查询和新增都会查一遍。
@ManyToOne(optional = false, fetch = FetchType.LAZY)
@JoinColumn(name = "loan_req_no", referencedColumnName = "loanReqNo", insertable = false, updatable = false, foreignKey = @ForeignKey(name = "null", value = ConstraintMode.NO_CONSTRAINT))
private LoanOrderEntity loanOrderEntity;
诸多办法尝试无果后,决定深入源码查看原因,以下是SimpleJpaRepository保存实体的源码:
@Transactional
public <S extends T> S save(S entity) {
判断是否是新实体
if (entityInformation.isNew(entity)) {
em.persist(entity);
return entity;
} else {
return em.merge(entity);
}
}
然后isNew判断如果实体不是基本类型,那么ID为null就是新实体
public boolean isNew(T entity) {
获取实体ID
ID id = getId(entity);
Clas