2016-11-03 11 views
1

カスケード機能を使用してこの関係を使用して挿入しようとします。システムにエラーが発生しました:1対複数カスケード保存、エラー:カラム "b_id"のnull値がnullでない制約に違反しています

ERROR: null value in column "b_id" violates not-null constraint

エンティティ。

@Id 
@GeneratedValue(generator = "system-uuid") 
@GenericGenerator(name = "system-uuid", strategy = "uuid2") 
private String id; 

@ManyToOne(cascade = {CascadeType.ALL}) 
@JoinColumn(name = "b_id") 
private B b; 

Bエンティティ。

@Id 
@GeneratedValue(generator = "system-uuid") 
@GenericGenerator(name = "system-uuid", strategy = "uuid2") 
private String id; 

@OneToMany(mappedBy = "b", cascade = { CascadeType.ALL }, fetch = FetchType.EAGER) 
private List<C> cs; 

Cエンティティ。

@GeneratedValue(generator = "system-uuid") 
@GenericGenerator(name = "system-uuid", strategy = "uuid2") 
private String id; 

@ManyToOne(fetch = FetchType.EAGER) 
@JoinColumn(name = "b_id", nullable = false, referencedColumnName = "id") 
private B b; 

実行します。

A a = new A(); 
    B b = new B(); 
    C c = new C(); 

    List<C> cs = new ArrayList<C>(); 
    cs.add(c); 

    b.setCs(cs); 
    a.setB(b); 

    aRepository.save(a); 

答えて

2

あなたcそのb "親" を知らない - 保存前にc.setB(b)を追加してみてください。

+0

私は、 'C'主キーが' bId'の複合キーで、 'C'の' code'という別のフィールドであることを知って、@prptnと同じようにする方法を探しています。私がまだエラーを取得しているので、 '@ EmbeddedId'と' @ ManyToOne'の間にはバインドされていないようです:カラム "b_id"のnull値はnot-null制約に違反します。何か案が? –

関連する問題