0
我Entity
模样JPA:@Embedded实体如何将自己的类型作为字段?
@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)
这究竟是为什么以及如何解决这个问题?
我明白了,谢谢@Mikko,但是我可以通过'JPA'拥有包含'parentVersion'的'version'的方式是什么? – daydreamer 2013-02-10 18:27:12
通常在这种情况下,版本是实体,并且具有ManyToOne关系自身(从小孩到父母)。如果需要双向关系,则另外OneToMany(集合值)向其他方向。 – 2013-02-10 18:34:26