[英]spring data mongodb Cannot perform cascade save on child object without id set
[英]Updating a child object in a save cascade result in ConstraintViolationException using spring data repository
我是Spring Data的新手,我想知道在保存父對象時如何更新子對象。
Pojo:
@Entity
@Table(name = "A")
public final class A {
@Id
@Column(name = "A_ID")
private Long id;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "B_ID")
private B b;
}
@Entity
@Table(name = "B")
public final class B {
@Id
@Column(name = "B_ID")
private Long id;
@Column(name = "B_NAME")
private String bName;
}
倉庫:
public interface ARepository extends JpaRepository<A, Long> {
}
和單元測試:
@Test
public void testSaveA() {
B b = new B();
b.setId(1L);
b.setName("b");
A a = new A();
a.setB(b);
//If b already exists in database then ConstraintViolationException
ARepository.save(b);
}
因此,這里的問題是它試圖插入b
而不是對其進行更新。 是否可以使用級聯對其進行更新?
首先,您必須在@Transactional
保留所有附加對象。 然后,您必須獲取該子項,如果存在,則將現有子項分配給A
,否則創建一個新的子項。
@Transactional()
public void update() {
B b = ARepository.find(1L);
if (b == null) b = new B();
//update etc
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.