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)
为什么会发生这种情况?如何解决此问题?
那是不可能做到的.另外,支持这样的构造没有多大意义,因为那时没有任何包含结束的点:Version包含Version,包含Version,包含Version等等.
在JPA 2.0规范中,这用以下词语告知:
不允许嵌入类之间的直接或间接循环包含依赖性.