Я использую JPA и Hibernate, и у меня есть @Entity
, который включает @ElementCollection
компонента @Embeddable
, который сам имеет два компонента @Embeddable
того же типа, которые имеют @OneToOne
ассоциация с другим @Entity
.
В основном:
@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;
// ...
}
(Обратите внимание, что имена классов были изменены, чтобы защитить невинных.)
Теперь проблема в том, что я получаю сообщение об ошибке при попытке автоматического обновления схемы:
Создать таблицу
MySQL явно не нравится &&
s. Мы используем подкласс org.hibernate.cfg.DefaultComponentSafeNamingStrategy
, который не вставляет &&
s нигде, где я могу видеть.
Я пытался @AssociationOverride
, но, похоже, его игнорировали, независимо от того, на каком уровне я его ставил. То есть я пытался переопределить атрибуты в Company
(@AssociationOverride(name = "residentialAddress.housingInfo', joinColumns = @JoinColumn(name = "residential_housing"))
на List
и т. Д.), А также пробовал в Employee
(@AssociationOverride(name = "housingInfo", joinColumns = @JoinColumn(name = "residential_housing"))
на residentialAddress
и т. Д.), Но ни один из них не показался делать что-либо вообще.