JPA、Hibernate、嵌入式和OneToOne

JPA、Hibernate、嵌入式和OneToOne,hibernate,jpa,Hibernate,Jpa,我使用的是JPA和Hibernate,有一个@Entity,其中包括一个@embedded组件的@ElementCollection,该组件本身有两个@embedded组件,类型相同,它们与另一个@OneToOne实体关联 基本上: @Entity public class Company { // ... @ElementCollection private List<Employee> employees; // ... } @Embeddabl

我使用的是JPA和Hibernate,有一个
@Entity
,其中包括一个
@embedded
组件的
@ElementCollection
,该组件本身有两个
@embedded
组件,类型相同,它们与另一个
@OneToOne
实体关联

基本上:

@Entity
public class Company {
    // ...
    @ElementCollection
    private List<Employee> employees;
    // ...
}

@Embeddable
public class Employee {
    // ...
    @Embedded
    private Address residentialAddress;
    @Embedded
    private Address postalAddress;
    // ...
}

@Embeddable
public class Address {
    // ...
    @OneToOne
    private HousingInfo housingInfo;
    // ...
}
@实体
公营公司{
// ...
@元素集合
私人名单雇员;
// ...
}
@可嵌入
公营雇员{
// ...
@嵌入
私人住址;
@嵌入
私人地址邮资;
// ...
}
@可嵌入
公共课堂演讲{
// ...
@奥内托内
私人住房信息住房信息;
// ...
}
(请注意,类的名称已更改,以保护无辜者。)

现在,我遇到的问题是,我在尝试自动更新架构时出错:

创建表格company\u employees(company\u id bigint不为null,employees\u collection&element\u residential\u address\u housing\u info tinyblob,employees\u collection&element\u postal\u address\u housing\u info tinyblob)

MySQL显然不喜欢
&
s。我们使用的是
org.hibernate.cfg.DefaultComponentSafeNamingStrategy
,它不会在我能看到的任何地方插入
&
s


我尝试了
@AssociationOverride
,但不管我把它放在哪个级别,它似乎都被忽略了。也就是说,我尝试覆盖
列表上的
公司
@AssociationOverride(name=“residentialAddress.housingInfo',joinColumns=@JoinColumn(name=“residential\u housing”))
中的属性,也尝试了
员工
@AssociationOverride(name=“housingInfo”)中的属性“,joinColumns=@JoinColumn(name=“residential_housing”))
关于
住宅设计等),但两者似乎都没有起到任何作用。

显然
@AttributeOverride
起了作用,尽管从文档来看,似乎我应该使用
@AssociationOverride