2016-03-21 6 views
0

この投稿のようなコードの場合、Hibernateは空の "ID"カラムを作成します。Hibernateのコンポジットキーの冗長カラムを削除します

「ID」列(「ID」は作成された列の正確な名前)を作成しないように調整するか、これは変更できませんか?

@Entity 
    @Table(name = "CATEGORY_RELATIONS") 
    public class CategoryRelations implements Serializable { 
    private CategoryRelationsPrimaryKey id; 
    @Id 
    @Column(name = "CATEGORY_RELATIONS_CATEGORY_ID") 
    private String categoryId; 
    @Id 
    @Column(name = "CATEGORY_RELATIONS_PARENT_ID") 
    private String parentId; 
    //getters and setters 
    @Entity 
    @IdClass(CategoryRelationsPrimaryKey.class) 
    public class CategoryRelationsPrimaryKey implements Serializable { 
     protected long categoryId; 
     protected long parentId; 
     //euqals, hashCode 
    } 
} 

答えて

0

1)@IdClassは、複合IDクラスではなく、エンティティにする必要があります。すでに@IdでIDプロパティをマークした場合

2)は、全く別のidプロパティは必要ありません:

@Entity 
@Table(name = "CATEGORY_RELATIONS") 
@IdClass(CategoryRelationsPrimaryKey.class) 
public class CategoryRelations implements Serializable { 

    @Id 
    @Column(name = "CATEGORY_RELATIONS_CATEGORY_ID") 
    private String categoryId; 

    @Id 
    @Column(name = "CATEGORY_RELATIONS_PARENT_ID") 
    private String parentId; 

    //... 

} 

public class CategoryRelationsPrimaryKey implements Serializable { 
    protected String categoryId; 
    protected String parentId; 
    // ... 
} 

あなたはそれがtransient DBのテーブルのカラムへのマッピングを避けるために作る、idという名前のいくつかのプロパティが必要な場合。

関連する問題