【发布时间】:2015-11-12 08:45:56
【问题描述】:
使用 Spring Data nad Querydsl 我们可以只声明存储库接口并跳过实现类。一些具有特定名称或使用@Query 注解的方法,仅此而已。
但有时我想使用 JPAQuery 并自己定义方法的主体,比如说
@Repository
public class MyRepositoryImpl implements MyRepository {
@PersistenceContext
private EntityManager em;
@Override
public List<Tuple> someMethod(String arg) {
JPAQuery query = new JPAQuery(em);
...
}
但是这样我将不得不实现其他 MyRepository 接口方法,这会破坏 Spring Data 的所有优势!
我可以看到两个选项:
- 为每个存储库声明另一个接口,然后正常实现它(接口数量翻倍)
- 将 EntityManager 注入 @Service 类并在那里实现我的自定义方法
我更喜欢选项#2,但据我所知,在@Service 类中我们应该只调用存储库方法,所以它也不是一个完美的解决方案。
那么程序员是如何处理的呢?
【问题讨论】:
-
我也面临同样的问题,目前我选择了服务层来使用
JPQLQuery
标签: spring spring-data spring-data-jpa querydsl