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 は、DB でこの列をマップする方法を知りません。

フィールドに追加@JoinColumnすると、休止状態はその @Id フィールドを使用します。

于 2013-02-10T07:30:33.177 に答える