sha*_*zin 6 cross-join querydsl spring-data-jpa
我正在使用带有Spring Data Jpa的Query DSL QueryDslPredicateExecutor
我有以下实体;
@Table(name="a_table")
@Entity
public class A {
@OneToOne
@JoinColumn(name = "b_id")
private B b;
}
@Table(name="b_table")
@Entity
public class B {
@Column(...)
private String name;
}
Run Code Online (Sandbox Code Playgroud)
当我构建Predicate
传递到我的存储库时,我做了类似的事情.
QA qa = QA.a;
BooleanBuilder booleanBuilder = new BooleanBuilder();
for(String name : strings) {
BooleanExpression b_name_eq= qa.b.name.eq(name);
BooleanExpression some_other_expression = ...;
booleanBuilder.or(ExpressionUtils.and(b_name_eq, some_other_expression));
}
return booleanBuilder.getValue();
Run Code Online (Sandbox Code Playgroud)
这会产生如下查询
select ... , ... , ...
from a_table at
cross join b_table bt
where at.b_id=bt.id
and (bt.name=? and some_other_expression or bt.name=? and some_other_expression or ...)
Run Code Online (Sandbox Code Playgroud)
我的问题是,我可以控制何时生成我的Predicate以使用除交叉连接之外的Join?因为一些专家认为交叉连接很慢.我知道我可以轻松地做到这一点,JPAQuery
但我们没有使用它.任何帮助将受到高度赞赏.
归档时间: |
|
查看次数: |
649 次 |
最近记录: |