0
我有這樣定義表:如何設置外鍵可空?
@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;
....
}
我想刪除客戶/快遞/關稅的對象,這是與貨物。所以基本上,我想能夠將外鍵設置爲NULL。
雖然可空設置爲true,GlassFish的說,它不能做,那外鍵約束受到侵犯。有任何想法嗎 ?
im使用的JavaEE 6,javax.persistence.api 1.0.2,glassfish的3+,和java德比分貝。
如果違反約束,它並非來自JPA和Glassfish,但是從你的數據庫。 Evenif協會是可選的,連接列被標記爲空的,如果你在數據庫中沒有空約束,數據庫將應用它,你會得到一個異常。更改您的數據庫架構。 –
如果你告訴我如何去做,我會非常開心。 –