2011-03-08 116 views
1

我使用JPA和休眠,並且具有@Entity其包括@Embeddable部件,其具有兩個部件@Embeddable本身,相同類型的,其具有與@OneToOne關聯的@ElementCollection另一個@EntityJPA,休眠,嵌入式和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,但它似乎被忽略,無論我把它放在哪個級別。也就是說,我嘗試覆蓋CompanyList等)上的Company@AssociationOverride(name = "residentialAddress.housingInfo', joinColumns = @JoinColumn(name = "residential_housing"))等)中的屬性,並在Employee@AssociationOverride(name = "housingInfo", joinColumns = @JoinColumn(name = "residential_housing"))residentialAddress等等)中嘗試了它,但是它們都沒有做任何事情。

回答

0

顯然@AttributeOverride的工作,儘管從文檔,似乎我應該使用@AssociationOverride