EclipseLink DDL 生成错误

Posted

技术标签:

【中文标题】EclipseLink DDL 生成错误【英文标题】:EclipseLink DDL Generation ERROR 【发布时间】:2013-02-11 03:53:31 【问题描述】:

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

公司.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】:

如果我理解正确,您希望 Township 成为一个正常的独立实体。在这种情况下,您应该从 CompanyAddress 的 township 字段中删除 @Embedded 注释。如果您希望它被嵌入,那么 Township 将需要一个 @Embeddable 注释而不是 @Entity。

【讨论】:

感谢您的帮助,我认为,JPA 规范允许 Embedded 类与其他 Entity 进行 O/R 映射。

以上是关于EclipseLink DDL 生成错误的主要内容,如果未能解决你的问题,请参考以下文章

DDL 生成和常规 persistence.xml 设置 (OpenJPA)

JPA - EclipseLink - 如何更改默认模式

EclipseLink DataModifyQuery 不会抛出致命异常

Eclipselink 2.5 使用 Maven 生成元模型

JPA 使用指南 /Eclipselink/JPA 实体生成器

JPA 更新日期时间戳