我可以使用一个存储库接口使用Spring JPA调用多个实体表吗?

时间:2018-04-23 16:15:35

标签: spring-boot spring-data-jpa

我有一个场景需要从Oracle数据库中的20个表中获取数据。我有20个实体类,我使用Spring JPA来获取数据。我正在使用Simple Crud操作来获取数据 {

public interface Object1Repository extends CrudRepository<Object1, Long> {

  List<Object1> findAll();
}

}

同样适用于table2 {

public interface Object2Repository extends CrudRepository<Object2, Long> {

  List<Object2> findAll();
}

}

等表3,table4等...

所以我的问题是我是否需要创建20个这样的接口存储库来从数据库中获取数据,或者有更好的方法来执行以下操作:

{

public interface CommonRepository extends CrudRepository<GenericObject, Long> {

  List<Object1> findAll();
  List<Object2> findAll();
  List<Object3> findAll();
  List<Object4> findAll();
  ...
}

}

2 个答案:

答案 0 :(得分:0)

您必须为每个实体创建一个存储库接口,并将查询20个表的逻辑移动到您的@Service组件,该组件将充当&#34;业务服务门面&#34;。如果要一起查询所有内容,可以使用@Transactionl注释方法,如果一个查询失败,则可以使用非注释。

答案 1 :(得分:0)

如上所述,您必须为每个repository创建每个entity

但如果您使用entities关系JPA@OneToMany@ManyToOne@ManyToMany之间的@OneToOne连接,则可以在一个请求中调用所有表格def FitFunc(x, a, b, c, d, e, border): if x < border: return a * x + b if x > border: return c * x**2 + d * x + e