JPA, Hibernate, Embedded и OneToOne - PullRequest
       0

JPA, Hibernate, Embedded и OneToOne

1 голос
/ 08 марта 2011

Я использую 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 и т. Д.), Но ни один из них не показался делать что-либо вообще.

1 Ответ

0 голосов
/ 08 марта 2011

Видимо @AttributeOverride сработало, хотя из документации казалось, что я должен был использовать @AssociationOverride.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...