2014-06-17 4 views
2

최대 절전 모드 3 주석을 사용하고 있습니다. 일대 다 관계의 'product'테이블과 'product_spec'하위 테이블이 있습니다. hibernateTemplate.save (제품)에서 오류가 발생했습니다1 : 1로 많은 계단식 하위 항목 삽입 동안 모두 부모 ID를 설정하지 않습니다.

삽입 할 수 없습니다 : [com.xx.ProductSpec]; SQL은 [Products_spec 열 'PRODUCT_ID'에 삽입

@Entity 
@Table(name = "product") 
public class Product implements Serializable { 

    private static final long serialVersionUID = 1L; 

    @Id @GeneratedValue 
    @Column(name = "PRODUCT_ID") 
    private Integer productId; 

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

    @OneToMany(mappedBy = "product",fetch = FetchType.EAGER, cascade = CascadeType.ALL) 
    private List<ProductSpec> specs = new ArrayList<ProductSpec>(); 

//getter and setter 
} 


@Entity 
@Table(name = "Products_spec") 
public class ProductSpec implements Serializable { 

    private static final long serialVersionUID = 1L; 

    @Id @GeneratedValue 
    @Column(name = "spec_id") 
    private Integer specId; 

    @ManyToOne 
    @JoinColumn(name = "PRODUCT_ID") 
    private Product product; 

    //getter and setter 
} 


hibernateUtil.getTemplate().save(product); 

답변

2

문제는 내가-NOT NULL로 (아이의 열을 조인) 열을 PRODUCT_ID했다되었다 null 일 수 없습니다. nullable로 만들면 효과가있었습니다.

나는 cascade all에 대해 최대 절전 모드로 실행 된 쿼리를 알지 못했다.

첫 x 째 hibernate는 결합 컬럼 값이있는 하위 항목을 널 (null)로 추가 한 후 항목을 갱신합니다.