我使用了spring data,jpa和querydsl,并学习了如何编写简单、漂亮的查询以左联接两个表。假设我有一个Project实体和一个Task实体,在Project中定义了OneToMany关系,我想做如下操作:
select * from project p left join task t on p.id = t.project_id where p.id = searchTerm
select * from project p left join task t on p.id = t.project_id where t.taskname = searchTerm
在JPQL中,应为:
select distinct p from Project p left join p.tasks t where t.projectID = searthTerm
select distinct p from Project p left join p.tasks t where t.taskName = searthTerm
我有一个ProjectRepository接口,它扩展了JPararePository和QuerydsLPredicateExecutor。使我能够访问方法:
Page<T> findAll(com.mysema.query.types.Predicate predicate, Pageable pageable)
我知道通过创建一个新的JPAQuery(entityManager)可以很容易地实现左联接。但我没有将实体管理器显式注入spring data JPA。有没有好的简单的方法来构建一个带有左联接的谓词?希望在座的有经验的人能给我一个例子。谢谢你。
弗雷。
如果您想要表达对任务的约束,那么您可以这样做
QProject.project.tasks.any().id.eq(searchTerm)
如果希望通过左联接来表达某些任务的预加载,则不能通过谓词来表达。Querydsl中的谓词是查询的where、join-on和having部分的布尔表达式。
查询DSL: 事实上,这段代码不起作用,我得到以下异常: 问题是条件子句是在方法-中指定的。 Spring Boot 2.0.2 Spring Data JPA 2.0.7 Hibernate5.2.16.final 查询DSL 4.1.4
如何在中实现或。一个简单的例子很有帮助。
所以我正在使用PHP和MySQL制作一个简单的电影数据库。我有两张桌子: 电影 电影类型
问题内容: 我有两个实体:和。我正在使用Hibernate 3.6。 如何使用休眠标准实现这一目标,最重要的是,我必须将其用于分页。 而“我的道”如下所示以显示jqgrid中的“问题”列表 公共列表showHelpDeskIssues(DetachedCriteria dc,int from,int size){ 对于简短的解释,请参考此问题,如何使用struts2-jqgrid插件在jqgrid
我有两个问题。两者都很好用: 第二个查询: 联合本: 工作正常,但我想添加左联接: DoSend工作...#1222-使用的SELECT语句具有不同的列数 你能帮我把这件事办好吗?