Eclipelink @ElementCollection 删除所有合并

Eclipelink @ElementCollection remove all on merge

我有这个映射:

@Entity
@Table(name="CUSTOMER")
class Customer {

   @Id
   @Column(name="CUSTOMER_ID")
   Long id;

   ...

   @ElementCollection
   @CollectionTable(name="CUSTOMER_ADDRESS", joinColumns=@JoinColumn(name="CUSTOMER_ID"))
   List<CustomerAddress> addresses;

}

@Embeddable
class CustomerAddress {

   String street;
   String zip;
   String ...
   String ...
   ...
}

我为客户 ID 保存了两个地址:1. 如果我更新此客户,只有一个地址,Eclipselink 会尝试使用 DELETE where 语句中的所有 CustomerAddress 字段删除丢失的地址行:

DELETE FROM CUSTOMER_ADDRESS WHERE STREET = ?, ..., ZIP = ?, ..., CUSTOMER_ID = ?

问题是我可能有重音符号和其他数据阻止 WHERE 语句匹配使用所有字段的行。有没有办法强制Eclipselink删除所有用户地址重新插入?

DELETE FROM CUSTOMER_ADDRES WHERE CUSTOMER_ID = ?
INSERT ALL FROM COLLECTION

我找不到实现我想要的方法。似乎 Hibernate 具有我期望的行为。

将 ElementCollection 更改为 OneToMany 并将模型更改为在 CustomerAddress 下有一个 ID。