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”)
私有列表版本;