Java JPA:如何创建与实体类型相同的字段?

Java JPA:如何创建与实体类型相同的字段?,java,hibernate,jakarta-ee,jpa,Java,Hibernate,Jakarta 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) @Enume

我的班级看起来像

@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;
我想要一个与
版本
类型相同的
父版本
,但我的测试失败

@Test
public void testVersion() {
    Version version = new Version("testVersion", VersionType.MAJOR);
    version = crudService.create(version);
    assertNotNull(version.getId());
}
我认为错误是

Caused by: org.hibernate.MappingException: Could not determine type for: com.myorg.project.versioning.entities.Version, at table: Version, for columns: [org.hibernate.mapping.Column(parentVersion)]

如何解决此问题?

您的家长版本中缺少一些注释。Hibernate不知道如何在数据库中映射此列


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

您的
父版本中缺少一些注释。Hibernate不知道如何在数据库中映射此列


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

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

@ManyToOne
private Version parentVersion;
如果需要双向关系(父母了解子女),可以通过添加以下内容来实现:

@OneToMany (mappedBy = "parentVersion")
private List<Version> childVersions;
@OneToMany(mappedBy=“parentVersion”)
私有列表版本;

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

@ManyToOne
private Version parentVersion;
如果需要双向关系(父母了解子女),可以通过添加以下内容来实现:

@OneToMany (mappedBy = "parentVersion")
private List<Version> childVersions;
@OneToMany(mappedBy=“parentVersion”)
私有列表版本;