有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

将现有父对象持久化到子对象时出现java问题

我有一个带有预填充数据的现有表操作,我正在尝试保存一个包含该操作的对象停止。Id作为外键。下面是我试过的代码。但在停止表中,即使没有错误,也不会保存引用

  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对象。但它并没有保存参考


共 (2) 个答案

  1. # 1 楼答案

    为JPA对象设置新值后,需要调用save

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

    我认为您需要从Action类中删除@JoinColumn注释。通常情况下,双方都不需要

    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)
        private Stop stops;
    }