2011-08-25 8 views
0

JPA를 사용하여 테이블을 생성하는 동안 제약을 설정할 때 을 어떻게 설정합니까? 엔티티 정의JPA를 사용하여 테이블을 생성하는 동안 UPAUT SET NULL을 NULL로 설정하려면 NULL을 설정하십시오. JPA를 사용하여 NULL을 설정하십시오.

테이블

CREATE TABLE `node` (
    `id` bigint(20) NOT NULL, 
    `parentNode_id` bigint(20) default NULL, 
    PRIMARY KEY (`id`), 
    KEY `FK1EC1DD0F28AB6BA5` (`parentNode_id`), 
    CONSTRAINT `FK1EC1DD0F28AB6BA5` FOREIGN KEY (`parentNode_id`) REFERENCES `node` (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 



@Entity 
public class Node { 

    @Id 
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "NodeSequence") 
    private long id; 

    @ManyToOne(cascade=CascadeType.REMOVE) 
    @JoinColumn(name = "parentNode_id", nullable = true) 
    protected Node parentNode = null; 

} 

답변

0

아래는이 목적을 위해 JPA 스키마 생성기를 사용하는 것은 좋지 않다. 거의 항상 데이터베이스를 관리하기 위해 수동으로 코딩되고 버전 제어하에있는 DDL 스크립트를 사용하는 것이 좋습니다. JPA를 공급자가 의식적으로 데이터베이스의 외래 키 제약 조건을 인식하고,하지 않는 한에서만, 당신의 영속 컨텍스트가 더러운 값을 갖는 발생합니다, 데이터베이스 제약 통해 null로 외래 키 값을 설정 또한

는 해당 값을 업데이트 지속성 컨텍스트에서 null로.

또한 JPA 스키마 생성기가이 기능을 지원하는 것은 거의 없습니다. 예를 들어, Hibernate는 아직 이것을 지원하지 않으며, 제기 된 아무런 문제가없고 multiplefeaturerequests이있다. EclipseLink도이 기능을 지원하지 않습니다.

관련 문제