Я довольно новичок в JPA, Java и Hibernate, поэтому, пожалуйста, наберитесь терпения.
У меня есть репозиторий JPA примерно так:
@Repository
public interface OrderRepository extends JpaRepository<VPLabOrderLite, Integer> {
@Query(
"select o from VPLabOrderLite o "
+ "inner join fetch o.stay s "
+ "inner join fetch s.patient p "
+ "left join fetch o.orderedTests t "
+ "left join fetch t.result r "
+ "where p.id = :maAccession")
List<VPLabOrderLite> getOrders(@Param("maAccession") String maAccession);
}
Проблема в том, что, когда он приходитдо последней выборки соединения в t.result он вызовет запрос sql обратно в базу данных для каждого экземпляра o.orderedTests t. Похоже, это связано с тем, что свойство t.result имеет атрибут @JoinColumns, потому что когда я изменяю его на один атрибут @JoinColumn, дополнительные запросы исчезают (но смысл объединения теряется, поэтому мне нужнодля объединения нескольких столбцов)
Вот атрибут результата в сущности OrderedTest
@OneToOne(fetch = FetchType.LAZY)
@JoinColumns({
@JoinColumn(
name = "orderNo",
referencedColumnName = "orderId",
insertable = false,
updatable = false),
@JoinColumn(
name = "testId",
referencedColumnName = "testId",
insertable = false,
updatable = false)
})
private VPLabTestResultLite result;
Как избавиться от лишних лишних запросов?