gpt4 book ai didi

java - 如何正确管理具有 OneToOne 双向关系的关联 JPA 实体?

转载 作者:行者123 更新时间:2023-12-01 19:42:12 27 4
gpt4 key购买 nike

假设给定了 2 个实体:主实体和从属实体。

它们通常在数据库中定义为dependants.master_id -> masters.id,即依赖实体保存对主实体的引用。

在 JPA one2one 双向关联中,这种情况通常如下所示:

class Master {
@OneToOne(mappedBy="master")
Dependant dependant
}
class Dependant {
@OneToOne
@JoinColumn("master_id")
Master master
}

这种方法导致需要处理关系的双方,例如:

Master master = new Master();
Dependant dependant = new Dependant();
dependant.setMaster(master);
master.setDependant(dependant);
repository.save(master);

而不是更直观、更接近业务逻辑,例如:

Master master = new Master();
Dependant dependant = new Dependant();
master.setDependant(dependant);
repository.save(master);

有什么常见的解决方法吗?我的意思是我不想搞乱从依赖方支持协会。

最佳答案

一种解决方法可能是使用@PrePersist。对于这两个实体,您可以实现如下方法:

大师

@PrePersist
private void prePersist() {
if(null == getDependant().getMaster()) {
getDependant().setMaster(this);
}
}

依赖

@PrePersist
private void prePersist() {
if(null == getMaster().getDependant()) {
getMaster().setDependant(this);
}
}

或者可能只是省略空检查。

关于java - 如何正确管理具有 OneToOne 双向关系的关联 JPA 实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54988105/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com