0

Entityのように見えます

@Entity
public class Market extends MutableEntity {

    @Column(nullable = false)
    private String name;
    @Column
    private String description;
    @Embedded
    private Version marketVersion; ..snipped

@Embedded Versionとして持っている

@Embeddable
public class Version {
    private String number;
    private VersionType versionType;
    private DateTime publishedOn;
    private DateTime retiredOn;
    private Version parentVersion;

しかし、これは失敗します

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)

なぜこの問題が発生し、どうすればこの問題を解決できますか?

4

1 に答える 1

5

それはできません。また、そのような構成をサポートすることはあまり意味がありません。なぜなら、包含が終了するポイントがないVersionからです。VersionVersionVersion

JPA 2.0仕様では、これは次の言葉で伝えられます。

埋め込み可能なクラス間の直接的または間接的な循環封じ込めの依存関係は許可されていません。

于 2013-02-10T18:14:54.790 に答える