我构建了一个DAL,它使用Spring的存储库通过Hibernate和JPA管理MySQL DB上的CRUD操作。特别是这是我的存储库定义
package my.dal.repository;
import my.domain.dal.User;
import org.springframework.data.querydsl.QueryDslPredicateExecutor;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface IUserRepository extends CrudRepository<User, String>, QueryDslPredicateExecutor<User>{
}
使用此定义,我可以使用QueryDSL Predicates执行CRUD操作
通过扩展QueryDslPredicateExecutor
接口和findAll(Predicate)
方法。
我面临的问题是,这种方式我无法进行跨表查询。实际上,我不能使用QueryDSL的连接工具,因为我没有HibernateQuery
。
使用Spring Repositories和QueryDSL实现连接操作的正确方法是什么?
谢谢
答案 0 :(得分:2)
解决。
下面我将编写使用Spring Repositories执行QueryDSL查询所需的步骤
通过在EntityManager
类中添加EntityManager
注释1>}来获取应用程序上下文中使用的Service
@PersistenceContext
@PersistenceContext
这样,em属性将链接到EntityManager em;
bean
在Spring应用程序上下文中定义。
实例化JPAQuery对象并使用它
EntityManager
QUser qUser = QUser.user;
JPQLQuery query = new JPAQuery(em);
现在我们可以使用JPQLQuery对象在不同的表上执行连接。
希望这有帮助