JPA 2.0には、埋め込みオブジェクトが1つのオブジェクトのみで埋め込まれていても複数ではないことがありますか?JPA 2.0:1つのエンティティ専用の埋め込みオブジェクト
私の場合、Address
をCustomer
に割り当てることができます。すべての顧客が独自のアドレスオブジェクトを使用し、2人の顧客が実際に同じオブジェクトを共有しないようにする制約を作成したいと考えています。
私のコードは次のようになります。
@Entity
public Customer {
@Id
@GeneratedValue
private Long id;
@Embedded
private Address address;
// ..
}
@Embeddable
public Address {
private String street;
private String city;
// ..
}
を現在、私は、その後持続し、それらを読んで、彼らは再び同じIDを持つオブジェクトを共有し、2人の顧客を作成し、それらに同じAddress
オブジェクトを割り当てた場合。私は他の顧客と住所を共有するそのような顧客を救うことを禁止したい。
...本当にJPA標準規格に準拠していません私はあなたのポイントを理解していれば、あなたはユニークを作成したいと思いますデータのアドレスが同じであってもアドレス入力? – Phani
@Phani正確に。将来の住所変更は、その住所を保持している顧客だけに影響を及ぼし、他の顧客には副作用がないようにする必要があります。これを解決するためのJavaの1つの方法は、設定時にアドレスのコピーを作成することです(私は仮定します)。しかし、私はJPAベースのソリューションを探しています。 – riwi
equalsメソッドをオーバーライドしなかった場合は、2つのエントリをデータベースに格納するのが理想的です。アクションのために生成されたsqlをチェックして、何が原因でそれが1として格納されているのかを確認してください。 – Phani