我刚刚开始使用QueryDSL和Spring Data JPA。我有一个存储所有谓词的类,这样在我的服务方法中,我可以通过传入布尔表达式来调用存储库中的findAll()或findOne()。这里有一个例子:
public static BooleanExpression byCode(String code) {
return QHeading.heading.code.eq(code);
}
服务类方法:
public Iterable<Heading> getByCode(final String code) {
return headingRepository.findAll(byCode(code));
}
这工作得很好,但如果一个标题是另一个标题的子标题,我希望重用谓词类中的相同方法,只是将它包装在返回父标题的另一个方法中,而不是返回与布尔表达式匹配的子标题。然而,我有一点麻烦,弄清楚正确的方法来做这件事。
所以,应该是这样的:
public static BooleanExpression byCode(String code) {
return QHeading.heading.code.eq(code);
}
public static BooleanExpression byChildCode(String code) {
QHeading.heading.childHeadings.eq(byCode(code));
}
public Iterable<Heading> getByChildCode(final String code) {
return headingRepository.findAll(byChildCode(code));
}
你要么这样做
public static BooleanExpression byCode(String code) {
return QHeading.heading.code.eq(code);
}
public static BooleanExpression byChildCode(String code) {
return QHeading.heading.childHeadings.any().code.eq(code);
}
或者如果您想要更多的代码重复:
private static BooleanExpression byCode(QHeading heading, String code) {
return heading.code.eq(code);
}
public static BooleanExpression byCode(String code) {
return byCode(QHeading.heading, code);
}
public static BooleanExpression byChildCode(String code) {
return byCode(QHeading.heading.childHeadings.any(), code);
}
问题内容: 我在SpringData中使用QueryDSL。我说表,我创建了实体类, 我写了以下 服务 方法 如上所述,我评论了。如何使用 QueryDSL 在可选参数 QueryDSL 使用Spring的数据? 谢谢 :) 问题答案: 可以用作布尔表达式的动态生成器:
我将QueryDSL与SpringData一起使用。我有表say,并创建了实体类say,我编写了以下服务方法 与上面一样,我注释了。如何在使用Spring数据的QueryDSL中对可选参数使用QueryDSL?
我希望在QueryDSL JPA中执行此SQL请求 为了在表中找到重复的行,我应该执行这个请求。但使用QueryDSL,我无法找到编写此代码的方法。 有什么建议吗? 多谢问候,
我在QueryDSL中有以下查询: 我正在尝试在主查询的子查询(字段 1 和字段 2)中引用别名字段。不幸的是,我得到这个错误: 我还尝试了以下内容: 但我得到的是相同的错误,只是“AliasedTable”而不是“field1”。 如何从outter select中引用别名字段? 先谢谢你。
null 类似于REST查询DSL 用于全文和结构化搜索的查询语言
我有一个SQL: 这将是一个很好的功能。