2013-02-11 56 views
0

Embeddable类有另一个Entity O/R映射注释时,我无法使用EclipseLink生成DDL。 如何为我的O/R映射生成DDL?EclipseLink DDL生成错误

Company.java

@Entity 
public class Company implements Serializable { 
    ..... 

    @Embedded 
    private CompanyAddress address; 
} 

CompanyAddress.java

@Embeddable 
public class CompanyAddress implements Serializable { 
    ..... 

    @Embedded 
    @OneToOne(fetch = FetchType.EAGER) 
    @JoinColumn(name = "TOWNSHIP_ID", referencedColumnName = "ID") 
    private Township township; 
} 

Township.java

@Entity 
public class Township implements Serializable { 
    ..... 
} 

当我生成我得到以下错误,

Exception [EclipseLink-195] (Eclipse Persistence Services - 2.1.2.v20101206-r8635): org.eclipse.persistence.exceptions.DescriptorException 
Exception Description: The shared class org.ace.insurance.system.common.company.CompanyAddress must not reference the isolated class org.ace.insurance.system.common.township.Townsh 
ip. 
Mapping: org.eclipse.persistence.mappings.OneToOneMapping[township] 
Descriptor: RelationalDescriptor(org.ace.insurance.system.common.company.CompanyAddress --> [DatabaseTable(COMPANY)]) 

回答

1

如果我正确理解你,你希望乡镇成为一个正常的独立实体。在这种情况下,您应该从CompanyAddress中的乡镇字段中删除@Embedded注释。如果你想嵌入它,那么Township需要一个@Embeddable注解来代替@Entity。

+0

感谢您的帮助,我认为JPA规范允许'Embedded'类与其他'Entity'进行O/R映射。 – CycDemo 2013-02-13 04:27:20