我正在开发Spring Boot应用程序。
我们有服务层,Rest Controller和Dao作为存储库。
我的数据库中有20到30个表,我不想为每个实体创建存储库并将其扩展到CrudRepository。
ex:用户是一个实体,要对用户执行持久性操作,我必须创建扩展CrudRepository的UserRepository。
与部门,公司等相同...
我想做的是,我将编写一个BaseRepository来扩展CrudRepository,基本存储库应接受所有实体并执行持久性操作。
有办法吗?
答案 0 :(得分:1)
不要扩展CrudRepository,它的功能都与泛型类型相关联,因此将其扩展为泛型实现很容易。您可能只想简单地直接使用JPA实体管理器:
import javax.persistence.EntityManager;
import org.springframework.beans.factory.annotation.Autowired;
public class GenericRepository {
@Autowired
private EntityManager entityManager;
public <T, ID> T findById(Class<T> type, ID id) {
return entityManager.find(type, id);
}
}