我想以通用的方式使用Spring JPARepository,这样我就不需要为所有实体编写相同的代码。

13 浏览
0 Comments

我想以通用的方式使用Spring JPARepository,这样我就不需要为所有实体编写相同的代码。

我是Spring的新手,想以通用的方式使用JpaRepository,这样我就可以对所有实体使用同一个接口。

请提供一些示例。

谢谢 🙂

比如我有两个实体类Employee.java和Student.java:

@Repository
public interface EmployeeRepo extends JpaRepository {
}

0
0 Comments

问题的出现原因:Spring Data没有提供一种通用的方式来使用Spring JPARepository,因为Spring Data的内部机制需要接口定义中的类型参数,如果没有具体的类型参数,则只能使用类型参数的边界(在怀疑的情况下为Object),这是不可用的。

解决方法:不应该为每个实体创建一个Repository,而是应该为每个聚合创建一个Repository。详细信息请参考这个答案:Are you supposed to have one repository per table in JPA?

根据上面的内容,我们可以得出以下结论:在Spring Data中,没有一种通用的方式来使用Spring JPARepository,因为Spring Data的内部机制需要接口定义中的类型参数。如果没有具体的类型参数,只能使用类型参数的边界(在怀疑的情况下为Object),这是不可用的。因此,我们不能为每个实体创建一个Repository,而是应该为每个聚合创建一个Repository。详细信息请参考上面给出的答案。

0