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