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;
....
}

出荷にリンクされているcustomer/courier/tariffオブジェクトを削除したい。したがって、基本的に、外部キーをNULLに設定できるようにしたいのです。

nullableはtrueに設定されていますが、glassfishはそれができないと言っており、外部キーの制約に違反しています。何か案は ?

javaee 6、javax.persistence.api 1.0.2、glassfish 3+、およびjavaderbydbを使用しています。

4

1 に答える 1

0

remove を呼び出す前に、「Java」/JPA でオブジェクトへの参照を null に設定する必要があります。これにより、外部キーの値が null に設定されます。

独自の DDL でこれを行うように外部キー制約を構成できますが、オブジェクト モデル (および場合によってはキャッシュ) は依然として破損します (コードを修正することをお勧めします)。

于 2012-12-03T15:14:25.693 に答える