java—在jpa中保存具有一对一关系的实体

vql8enpb  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(375)

我有一个实体 Request :

@Entity
public class Request {

    @Id
    @GeneratedValue
    private Long id;

    @OneToOne
    private Candidate candidate;

    ...
}

要创建上述实体并将其保存到jpa存储库中,我将执行以下操作:

Candidate candidate = candidateRepository.findById(requestUpdate.getCandidate()).orElse(null);

Request request = new Request(candidate);
Request save = requestRepository.save(request);

作为 Request db中的表为candidate存储fk,我认为设置一个id就足够了,但是jpa希望我设置candidate对象。这迫使我查询候选存储库。
是否需要从候选存储库中查询候选存储 Request 或者如果我有候选人身份证,我不能直接设置吗?

bkkx9g8r

bkkx9g8r1#

你需要使用 EntityManager#getReference 或者 JpaRepository#getOne . 它不会从数据库中获取整个实体,而是将您已有的id Package 到代理中以同步关系:

Candidate candidate = candidateRepository.getOne(requestUpdate.getCandidate());

Request request = new Request(candidate);
Request save = requestRepository.save(request);

相关问题