【发布时间】:2019-07-11 01:16:43
【问题描述】:
我有具有传递关系的实体。因此,实体 A 映射到实体 B 的 OneToMany,而实体 B 映射到实体 C 的 OneToMany。 实体 A 有一个属性 userID,它不是主键,我需要从数据库中获取用户 ID 的所有记录。由于要求,我想急切地获取A和B的子记录。我已经使用 FetchMode join 注释了实体,并且我的存储库有一个方法 findByUserId(int userId)。 我正在使用带有hibernate的spring data JPA作为底层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);
}
【问题讨论】:
标签: java hibernate jpa spring-data-jpa spring-data