2012-12-01 5 views
0

I는 다음과 같이 정의 테이블이 :외래 키를 null로 설정하는 방법은 무엇입니까?

@Entity 
public class Shipment implements Serializable { 
    private static final long serialVersionUID = 1L; 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    @ManyToOne(optional=true) 
    @JoinColumn(name="SENDER_ID",referencedColumnName="CUSTOMER_ID", nullable=true) 
    private Customer sender; 

    @ManyToOne(optional=true) 
    // @Column(nullable=true) 
    @JoinColumn(name="TARRIF_ID",referencedColumnName="TARRIF_ID",nullable=true) 
    private Tarrif tarrif; 




    @ManyToOne(optional=true) 
    // @Column(nullable=true) 
    @JoinColumn(name="RECIPIENT_ID",referencedColumnName="CUSTOMER_ID",nullable=true) 
    private Customer recipient; 


    @ManyToOne(optional=true) 
    // @Column(nullable=true) 
    @JoinColumn(name="COURIER_ID",referencedColumnName="COURIER_ID",nullable=true) 
    private Courier courier; 
.... 
} 

나는 선적에 연결되어 고객/택배/관세 개체를 삭제할. 그래서 기본적으로 Foreign Key를 NULL로 설정할 수 있기를 원합니다.

nullable이 true로 설정되어 있지만 glassfish는 수행 할 수 없다고 외래 키 제약 조건을 위반했습니다. 어떤 아이디어?

메신저 6, javax.persistence.api 1.0.2, glassfish 3+ 및 java derby db를 사용합니다.

+0

제약 조건을 위반하면 JPA와 Glassfish가 아니라 데이터베이스에서 가져옵니다. 연결이 선택 사항이고 조인 열이 nullable로 표시 되어도 데이터베이스에 null 제약 조건이있는 경우 데이터베이스에서이를 적용하므로 예외가 발생합니다. 데이터베이스 스키마를 변경하십시오. –

+0

내가 어떻게하는지 말해 준다면 정말 행복 할거야. –

답변

0

"Java"/ JPA에서 remove를 호출하기 전에 개체에 대한 참조를 "Java"/ JPA에서 null로 설정해야합니다. 이로 인해 외래 키 값이 null로 설정됩니다.

자신의 DDL에서이 작업을 수행하기 위해 외래 키 제약 조건을 구성 할 수 있지만 개체 모델 (및 캐시)이 여전히 손상되어 코드를 수정하는 것이 좋습니다.

관련 문제