2016-08-22 5 views
0

みんな!私は、子オブジェクトを永続化すると、親IDを持つ列がnullである「子」テーブルの親のidに節約に問題があります。..@OneToOne - 親Idを保存しないすべてのカスケード

親(Userクラス)

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.Table; 

@Entity 
@Table(name = "user") 
public class User { 

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
@Column(name = "user_id") 
private long userId; 

@Column(name = "name") 
private String name; 

@Column(name = "address") 
private String address; 

@Column(name = "postcode") 
private int postCode; 

チャイルド(資格クラス)

import javax.persistence.CascadeType; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.JoinColumn; 
import javax.persistence.OneToOne; 
import javax.persistence.Table; 


@Entity 
@Table(name="credential") 
public class Credentials { 

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
@Column(name="id") 
private int id; 

@Column(name="username") 
private String username; 

@Column(name="password") 
private String password; 


@OneToOne(cascade= CascadeType.ALL) 
@JoinColumn(name="user_id") 
public User user; 

Applicationクラス

User user = new User(); 

    user.setAddress("asdkapoda"); 
    user.setName("xaxaxaxa"); 
    user.setPostCode(3423); 

    Credentials credit = new Credentials(); 
    credit.setPassword("sadsad"); 
    credit.setUsername("sdadsa"); 
    session.save(credit); 

データベース資格情報では、user_id = NULLです。 Hibernate 4.3

+0

あなたは 'Credential'の' user'について話していますか?その場合は、以前に作成したユーザーにユーザーを設定していません。 – ChiefTwoPencils

答えて

1

Hibernateは実際にCredentialsオブジェクトにUserオブジェクトを関連付けていないという事実を忠実に保存しています。保存する前にcredit.setUser(user);を追加してみてください。

+0

thats true、 'credit.setUser(user);が見つかりませんでした あなたのセッターメソッドを呼び出すことで、ユーザーオブジェクトをクレジットに追加する必要があります –

関連する問題