我使用JPA和休眠,並且具有@Entity
其包括@Embeddable
部件,其具有兩個部件@Embeddable
本身,相同類型的,其具有與@OneToOne
關聯的@ElementCollection
另一個@Entity
。JPA,休眠,嵌入式和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;
// ...
}
(注意類的名稱已被更改,以保護無辜的。)現在
,我遇到的問題是我得到想要的錯誤爲AutoUpdate模式:
創建表company_employees(COMPANY_ID BIGINT NOT NULL,employees_collection & & element_residential_address_housing_info TINYBLOB,employees_collection & & element_postal_address_housing_info TINYBLOB)
的MySQL顯然不喜歡&&
秒。我們使用的是org.hibernate.cfg.DefaultComponentSafeNamingStrategy
的子類,它不會在我能看到的任何地方插入&&
。
我試過@AssociationOverride
,但它似乎被忽略,無論我把它放在哪個級別。也就是說,我嘗試覆蓋Company
(List
等)上的Company
(@AssociationOverride(name = "residentialAddress.housingInfo', joinColumns = @JoinColumn(name = "residential_housing"))
等)中的屬性,並在Employee
(@AssociationOverride(name = "housingInfo", joinColumns = @JoinColumn(name = "residential_housing"))
,residentialAddress
等等)中嘗試了它,但是它們都沒有做任何事情。