JPA:如何创建与Entity相同类型的字段?

时间:2013-02-10 06:53:32

标签: java hibernate java-ee jpa

我的班级看起来像

@Entity
public class Version extends MutableEntity {
    @Column(nullable = false)
    private String name;
    @Column(nullable = false)
    @Enumerated(EnumType.STRING)
    private VersionType type;
    @Column(nullable = false)
    @Enumerated(EnumType.STRING)
    private VersionStatus status;
    @Column(nullable = true)
    private DateTime publishedOn;
    @Column(nullable = true)
    private DateTime retiredOn;
    @Column
    private Version parentVersion;

我希望parentVersion与[{1}}具有相同的类型,但我的测试失败

Version

我将错误视为

@Test
public void testVersion() {
    Version version = new Version("testVersion", VersionType.MAJOR);
    version = crudService.create(version);
    assertNotNull(version.getId());
}

如何解决此问题?

2 个答案:

答案 0 :(得分:1)

这不是基本属性。它是关系,因为价值是其他实体。因此,应使用@ManyToOne注释:

@ManyToOne
private Version parentVersion;

如果需要双向关系(父母知道孩子),可以通过添加以下内容来完成:

@OneToMany (mappedBy = "parentVersion")
private List<Version> childVersions;

答案 1 :(得分:0)

您在parentVersion错过了一些注释。 Hibernate不知道如何在数据库中映射此列。

@JoinColumn添加到您的字段,hibernate将使用其@Id字段。