Joh*_*ler 6 java sql hibernate jpa jpql
我有Entity1
和Entity2
.他们有一个OneToOne可以为空的关系.
@Entity
class Entity1 {
@Id
@Column(name = "id")
private Long id;
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "entity2")
@JoinColumn(nullable = true)
private Entity2 entity2;
...
}
Run Code Online (Sandbox Code Playgroud)
如何查询所有Entity1
具有null的对象entity2
?
因为如果我这样做:
SELECT e FROM Entity1 e WHERE e.entity2 IS NULL
Run Code Online (Sandbox Code Playgroud)
JPA引擎在两个表之间执行JOIN并放入一个无用的WHERE clausule(WHERE entity_id = NULL
).恢复,它执行一个无用的本机SQL.怎么能
当前解决方案
阅读OpenJPA文档,我发现应该使用Native Queries来解决JPA限制.我可以使用本机查询非常容易,我目前正在这样做,但我想避免使用它.
您只需运行此JPQL查询:
SELECT e1
FROM Entity1 e1
LEFT JOIN e1.entity2 e2
WHERE e2 IS NULL
Run Code Online (Sandbox Code Playgroud)
这LEFT JOIN
就是你要找的东西.
归档时间: |
|
查看次数: |
4510 次 |
最近记录: |