У меня есть сущности, которые имеют переходные отношения.Таким образом, сущность A сопоставляется OneToMany с сущностью B, а сущность B сопоставляется OneToMany с сущностью C. У сущности A есть свойство userID, которое НЕ является первичным ключом, и мне нужно извлечь все записи для идентификатора пользователя из БД.Из-за требований я хочу охотно получать дочерние записи A и B.Я аннотировал сущности с помощью соединения FetchMode, и в моем репозитории есть метод findByUserId (int userId).Я использую пружинные данные JPA с Hibernate в качестве основного ORM.Выполнение вышеупомянутого метода запроса запускает несколько запросов, хотя я ожидал, что будет запущен только один запрос с объединением.
Я уже пробовал EntityGraphs, аннотировал свой метод репозитория с помощью NamedQuery, пробовал отображать сущности ManyToOne двунаправленный, но, похоже, ничего не происходитработает.
@Entity
@Table(name = "A_Master")
public class EntityA{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
private int userId;
@OneToMany(cascade = CascadeType.PERSIST)
@JoinColumn(name = "FK_reservationId")
@Fetch(FetchMode.JOIN)
private List<EntityB> bEntities= new ArrayList<>();
}
@Entity
@Table(name = "Entity_B")
public class EntityB{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@OneToMany(cascade = CascadeType.PERSIST)
@JoinColumn(name = "FK_journeyId")
@Fetch(FetchMode.JOIN)
private List<EntityC> cEntities = new ArrayList<>();
}
public interface ReservationRepository extends JpaRepository<EntityA, Integer>
{
public List<EntityA> findByUserIdAndStatus(String userId);
}