2016-11-23 12 views
0

oneToMany関係で子エンティティを保持する方法はありますか?登録創造にSpring JPA + Hibernate:OneToMany双方向永続

@Entity 
public class Payment implements Serializable { 

    @ManyToOne(cascade = {CascadeType.ALL}, fetch = FetchType.LAZY) 
    @JoinColumn(name = "registration", nullable = false) 
    private Registration registration; 
} 

@Entity 
public class Registration implements Serializable { 

@OneToMany(mappedBy="registration", cascade = {CascadeType.ALL}, fetch = FetchType.LAZY) 
private List<Payment> payment; 
} 

、登録欄には、支払テーブルでNULL可能でない場合:

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: 列 '登録' の

nullにすることはできません

登録が無効の場合、支払いは作成されますが、登録列はnullです。

enter image description here

例外が発生し、「HH000010:バッチのリリース時にまだJDBC文が含まれています」まで実行されます。

ハイバーネーションバッチを無効にしたり、何が間違っているのか理解してください。

答えて

0

登録エンティティを保持する必要があります。

は、主キーと自動インクリメントする必要がありますテーブルの登録のためのあなたのコード列「登録」を見ることによって、あなたの登録オブジェクト

Registration reg = new Registration(); 

List<Payment> lstPayment = new ArrayList<Payment>(); 
for loop... 
    Payment pay = new Payment(); 
    // imp point 
    pay.setRegistration(reg); 
    lstPayment.add(pay); 
for loop ends // 

reg.setLstPayment(lstPayment); 

//persist Registration entity 
em.persist(reg); 
+0

CrudRepositoryでspring boot-jpaを使用しています。通常、子の永続化を指定する必要はありません。そして、私の場合、子供は支払いです。これは登録作成時に存続しなければなりません – Mezoo

0

を初期化。そうでない場合は、テーブルで確認してください。

子テーブルの主キーがプライマリキーとして設定されておらず、テーブル内で自動インクリメントの場合、このエラーが発生します。