将现有父对象持久保存到子对象中的问题

问题描述 投票:0回答:3

我有一个包含预填充数据的现有表Action,并且我试图保存一个对象Stop,该对象具有Action.Id作为外键。以下是我尝试过的代码。但是,即使没有错误,在Stop表中也不会保存引用。

  public class Stop {

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "ACTION_ID", updatable = false, insertable = false)
    private Action action;
}
public class Action {

    @Id
    @Column(name = "ACTION_ID")
    private String actionId;

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "ACTION_ID")
    private Stop stops;
}

我尝试显式调用Optional<Action> action = actionRepo.findByActionId("ARRIVE")并将其设置为stop对象。但这并不能与参考一起保存。

java hibernate spring-boot spring-data-jpa hibernate-mapping
3个回答
0
投票

为JPA对象设置新值后,您需要调用保存

Optional<Action> action = actionRepo.findByActionId("ARRIVE");
    if (action.isPresent()){
    actionRepo.save(action.get().setActionName("balal"));
}

0
投票

您可能需要从Action类中删除@JoinColumn批注。通常,您都不需要两面。


-1
投票

您的意思是它没有得到保存?是否为null,不出现在表stop中?您可以在尝试保存后向我们显示表格停止的内容吗?

© www.soinside.com 2019 - 2024. All rights reserved.