JPA:@Embedded实体如何将自身类型作为字段?

day*_*mer 0 java hibernate jpa java-ee

我的Entity样子

@Entity
public class Market extends MutableEntity {

    @Column(nullable = false)
    private String name;
    @Column
    private String description;
    @Embedded
    private Version marketVersion; ..snipped
Run Code Online (Sandbox Code Playgroud)

其中有@Embedded Version作为

@Embeddable
public class Version {
    private String number;
    private VersionType versionType;
    private DateTime publishedOn;
    private DateTime retiredOn;
    private Version parentVersion;
Run Code Online (Sandbox Code Playgroud)

但这失败了

08:12:23.481 [main] DEBUG o.h.cfg.annotations.PropertyBinder - Building property number
08:12:23.481 [main] DEBUG org.hibernate.cfg.Ejb3Column - Binding column: Ejb3Column{table=org.hibernate.mapping.Table(Market), mappingColumn=parentVersion, insertable=true, updatable=true, unique=false}

    java.lang.StackOverflowError
        at org.hibernate.cfg.AbstractPropertyHolder.getExactOverriddenColumn(AbstractPropertyHolder.java:179)
        at org.hibernate.cfg.AbstractPropertyHolder.getExactOverriddenColumn(AbstractPropertyHolder.java:179)
        at org.hibernate.cfg.AbstractPropertyHolder.getExactOverriddenColumn(AbstractPropertyHolder.java:179)
        at org.hibernate.cfg.AbstractPropertyHolder.getExactOverriddenColumn(AbstractPropertyHolder.java:179)
        at org.hibernate.cfg.AbstractPropertyHolder.getExactOverriddenColumn(AbstractPropertyHolder.java:179)
        at org.hibernate.cfg.AbstractPropertyHolder.getExactOverriddenColumn(AbstractPropertyHolder.java:179)
        at org.hibernate.cfg.AbstractPropertyHolder.getExactOverriddenColumn(AbstractPropertyHolder.java:179)
        at org.hibernate.cfg.AbstractPropertyHolder.getExactOverriddenColumn(AbstractPropertyHolder.java:179)
        at org.hibernate.cfg.AbstractPropertyHolder.getExactOverriddenColumn(AbstractPropertyHolder.java:179)
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?如何解决此问题?

Mik*_*unu 5

那是不可能做到的.另外,支持这样的构造没有多大意义,因为那时没有任何包含结束的点:Version包含Version,包含Version,包含Version等等.

在JPA 2.0规范中,这用以下词语告知:

不允许嵌入类之间的直接或间接循环包含依赖性.