有 Java 编程相关的问题?

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

保存父实体时未持久化java子实体

我有两个具有一对一关系的实体

具体如下:

@Entity
class Parent {

@Id
private String id;

@OneToOne(mappedBy = "parent", cascade = CascadeType.ALL)
private Child child;

// getter setter

}

@Entity
public class Child {

@Id
private String id;

@OneToOne(cascade = CascadeType.ALL,fetch=FetchType.LAZY)
@JoinColumn(name = "id", insertable = false, updatable = false)
private Parent parent;

// getter setter

}



@Service
public TestService {

@Autowired
private ParentRepository parentRepository;

public void testMethod() {

// Creating new ChildElement
Parent p = parentRepository.findById("ID1").get();
Child c = parent.getChild()
if(c == null) {
c = new Child() 
c.setId("ID2");
}
// set child with some property

p.setChild(c);

parentRepository.save(p);

}

}

当我第一次创建一个新的子实体时,此代码正在运行。但在更新子实体时,它不会得到更新

如果我遗漏了什么,请告诉我好吗


共 (2) 个答案

  1. # 1 楼答案

    我猜你的问题和这条线有关

    @JoinColumn(name = "id", insertable = false, updatable = false)
    private Parent parent;
    

    我的意思是insertable = falseupdatable = false。 当Updateable和insertable等于false时,我认为它不会被更新

  2. # 2 楼答案

    你必须做双向设置。 在p.setChild(c)之后添加以下行

    C.setParent(p)