java - jpql,获取具有可为空变量的行

标签 java spring hibernate select jpql

@Entity
class A{
   @OneToOne(optional=true)
   @JoinColumn(foreignKey = @ForeignKey(name = "FK_USER"), nullable = true)
   B b;
   ..other fields...
}

@Entity 
class B{
   ....
}

我想获取表 A 的行。 我正在发出 jpql 请求

select new ADTO(b,..other fields(don't necessarily all)...) from A 

(ADTO - data transfer object)

它是有效的,但只是当 A::b 不为空时。 如果 A::b 为 null,则不会选择该行。

如果我有另一个请求,即使行内容为 null A::b,它也能正常工作

select new ADTO(..filds without A::b...) from A 

如何选择 A::b 可为空的行?

最佳答案

为了不与别名和实体名称混淆,我将实体 A 和 B 重命名为 Parent 和 Child,然后使用外部联接进行查询,如下所示:

select new ParentDTO(c, p.otherfield) from Parent p left join p.child c

关于java - jpql,获取具有可为空变量的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32056977/

相关文章:

java - 无法执行语句 SQL 语法异常

java - Hibernate 期望时间戳数据库列的日期

java - 运行上传文件代码时出现 HTTP 状态 404 错误

Wildfly 中的 Spring Boot Websockets

java - 如何使用spring验证junit中的方法调用typsafe?

java - 同一个请求的不同执行时间

java - Hibernate更新查询困惑

java - JSP 代码中的大括号

java 。连接字符串。微基准

java - Arquillian wildfly8.2 嵌入式 : JBAS014670: Failed initializing module org. jboss.as.logging