如何使用 BooleanBuilder (QueryDSL) 为可选的 OnetoOne JPA/Hibernate 关系建模谓词?

Posted

技术标签:

【中文标题】如何使用 BooleanBuilder (QueryDSL) 为可选的 OnetoOne JPA/Hibernate 关系建模谓词?【英文标题】:How to model a Predicate w/ BooleanBuilder (QueryDSL) an optional OnetoOne JPA/Hibernate relationship? 【发布时间】:2021-11-22 16:36:01 【问题描述】:

我正在尝试为以下实体关系构建布尔谓词:

有一张员工表,其中一些员工可能是经理。

Employee.java:

private int empId;

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name="EMPID", referencedColumnName = "MANAGER_EMPID", insertable = false, updatable = false)
@NotFound(action= NotFoundAction.IGNORE)  //Not everyone is a manager
private Manager manager;

那么我只想返回那些是经理的员工。

我已经尝试过:

BooleanBuilder builder = new BooleanBuilder();
QEmployee qEmployee = QEmployee.employee;

builder.and(qEmployee.manager.isNotNull());
// as well as:
// builder.and(qEmployee.manager.managerId.isNotNull());

两者都不起作用,因为这两种尝试最终都不会修改正在使用的 JPA/Hibernate 查询。

我如何使用 QuerySQL 和 BooleanBuilder 只返回那些是经理的员工?

【问题讨论】:

【参考方案1】:

希望这能让您有一个清晰的认识。看这里https://www.baeldung.com/querydsl-with-jpa-tutorial

【讨论】:

基本 Querydsl 的良好链接,但不包括 Predicates/BooleanBuilder。

以上是关于如何使用 BooleanBuilder (QueryDSL) 为可选的 OnetoOne JPA/Hibernate 关系建模谓词?的主要内容,如果未能解决你的问题,请参考以下文章

第一章 响应式设计之Media Quer

csharp Crear grid sin quer en Json formas

java.sql.SQLException:目标:commerce.0.primary:vttablet:rpc 错误:代码 = InvalidArgument desc = 未知系统变量 'quer

RavenDB:如何使用多个搜索词进行查询

sqlserver在用c语言连接操作的时候,有没有提供类似mysql的API如mysql_quer

在 queryDSL 中使用 postgresql 数组覆盖运算符的语法