0
我有兩個沒有主鍵或外鍵引用的實體,但我需要有使用或提取關係實體的單向實體。 使用Spring Data jpa。JPA n + 1迭代
下面是實體類:
@Entity
@Table(name="CAR_PARTS")
Class CarParts {
@id
@Column(name="PART_ID")
private Long id;
@Column(name="PART_NAME")
private String partName
}
@Entity
@Table(name="CAR_HISTORY")
Class CarHistory {
@id
@Column(name="CAR_HIST_ID")
private Long id;
@Column(name="PART_NAME")
private String part;
@ManyToOne(fetch=FetchType.lazy,optional=false)
@JoinColumn(name="PART_NAME",referencedColumnName="PART_NAME",insertable=false,updatable=false)
private CarPart carpart;
@column(name="SUBMIT_DATE")
private Date submitedDate;
}
DAO類:
公共接口CarHistoryDAO延伸JpaRepository,JpaSpecificationExecutor { }
服務類:
public class CarhistoryServiceImpl {
@Autowired
private CarHistoryDAo carHistoryDAO;
public List<CarHistory> findCarHistory(Date startDate, Date endDate) {
List<CarHistory> hists =
carhistoryDAO.findAll(where(historyBySubmitedDate(startDate,endDate)));
}
public static Specification<CarHistory> historyBySubmitedDate(
final Date startDate, final Date endDate) {
return new Specification<CarHistory>() {
@Override
public Predicate toPredicate(Root<CarHistory> variableRoot,
CriteriaQuery<?> q, CriteriaBuilder cb) {
Predicate p1 = cb.between(
variableRoot.<Date> get("submitedDate"),
DateUtils.truncate(startDate, Calendar.DAY_OF_MONTH),
DateUtils.ceiling(endDate, Calendar.DAY_OF_MONTH));
return cb.and(p1);
}
};
}
與上述關係,何時取C arHistory實體我得到n + 1迭代的Carpart實體,
我正在使用Spring數據jpa,實現使用spring數據jpa中的規範。 有什麼辦法可以避免n + 1迭代問題。 我onetoone而不是多對一
該庫的方法您使用的檢索解釋?或者是定製的。請加 –
更新道和服務 –