2016-08-22 10 views
0

친구들! 자식 객체를 지속 할 때 나는 "아이"테이블 부모의 ID 절약과 문제가, 부모 ID로 열은 null입니다 ..@OneToOne - 캐스케이드 모두 부모님을 저장하지 않습니다.

부모 (사용자 클래스)

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);'가 누락되었습니다. setter 메소드를 호출하여 사용자 객체를 신용에 추가해야합니다 –