保存父实体时未持久化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);
}
}
当我第一次创建一个新的子实体时,此代码正在运行。但在更新子实体时,它不会得到更新
如果我遗漏了什么,请告诉我好吗
# 1 楼答案
我猜你的问题和这条线有关
我的意思是
insertable = false
和updatable = false
。 当Updateable和insertable等于false时,我认为它不会被更新# 2 楼答案
你必须做双向设置。 在p.setChild(c)之后添加以下行