![](/img/trans.png)
[英]Exception when save in a JPA definition with Spring Boot + Spring data JPA
[英]Spring data jpa save
如何通過考試? (在遷移我的代碼以使用存儲庫之前正在工作)。 保存后, bs
將存儲在數據庫中,但不會更新對象。 我必須要做些什么?
給定這些類:
@Entity
public class A {
@Id
private String id;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "aId")
private Set<B> bs= new HashSet<B>();
...
}
@Entity
public class B {
@Id
@GeneratedValue
private int id;
private String aId;
private String foo;
...
}
和存儲庫:
@RepositoryDefinition(domainClass = A.class, idClass = String.class)
public interface ARepository {
...
void save(A a);
...
}
該測試失敗:
// "a" saved and flushed
B b = new B();
b.setAId(a.getId());
a.getBs().add(b);
ARepository.save(a);
assertTrue(b.getId() > 0);
repository.save()
確實persist
(如果提供的參數是瞬時的)或merge
(否則)。
由於a
不是瞬態的,因此執行merge
,這意味着不persist
可以級聯為bs
persist
操作。
你要么必須保存b
明示或添加b
到一個新的a
對前a
被保存,以便persist
正確的級聯。
可能的原因是B對象尚未處於持久狀態。 一旦將其保存-您應該不會出錯。
應該看起來像這樣:
// "a" saved and flushed
B b = new B();
BRepository.save(b)
b.setAId(a.getId());
a.getBs().add(b);
ARepository.save(a);
assertTrue(b.getId() > 0);
還可以請您提供stacktrace嗎? 真的很有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.