我有实体1
和实体2
。它们之间具有可空的一对一关系。
@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;
...
}
如何查询所有具有空entity2
的Entity1
对象?
因为如果我这样做:
SELECT e FROM Entity1 e WHERE e.entity2 IS NULL
JPA引擎在两个表之间执行JOIN并放置一个无用的WHERE子句(WHERE entity_id = NULL
)。总结一下,它执行了一个无用的本地SQL。
当前解决方案:
阅读OpenJPA文档后,我发现应该使用本地查询来解决JPA的限制。我可以很容易地使用本地查询来解决问题,但我想避免使用它。
@JoinColumn
还是mappedBy
方法进行链接,或者这是一个@PrimaryKeyJoinColumn
吗? - DuncanKinnear