1

我的课看起来像

@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与 相同的类型Version,但我的测试失败了

@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)]

我该如何解决这个问题?

4

2 回答 2

1

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

@ManyToOne
private Version parentVersion;

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

@OneToMany (mappedBy = "parentVersion")
private List<Version> childVersions;
于 2013-02-10T18:51:27.930 回答
0

您在 处缺少一些注释parentVersion。Hibernate 不知道如何在数据库中映射此列。

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

于 2013-02-10T07:30:33.177 回答