2017-01-07 9 views
1

要件(カテゴリおよびサブカテゴリ)ここで は、私は2つのテーブルを持っている

がモデル

@Table(name = "category") 

public class Category { 

    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private int mCat_Id; 

    @Column(name = "category" , unique = true) 
    @JsonProperty("category") 
    private String mCategory; 
    } 



public class SubCategory { 

    @Id 
    @GeneratedValue(strategy=GenerationType.IDENTITY) 
    private int mSub_Cat_Id; 

    @Column(name = "subcategory") 
    @JsonProperty("subcategory") 
    private String mSubCategory; 

    @OneToMany 
    @JoinColumn(name="category_id") 
    private Category category; 
} 

私のカテゴリーであり、入力のために休止状態に提案が必要それがようUPSCを追加して

record 1: 
{"subcategory":"ss" , "category":{ "category":"upsc"}} 
record 2: 
{"subcategory":"science" , "category":{ "category":"upsc"}} 

異なるサブカテゴリとカテゴリに合格するたびに新しいレコードが残ります。

私の必要条件は、私が似たカテゴリを渡しているときに、カテゴリテーブルにレコードを作成すべきではないということです。

何か不足していますか?あるいは、これを達成する他の方法がありますか?

期待される結果:

Category table > 1 record > category : upsc , category_Id : 1 

SubCategory table > 2 records > 
     subcategoty : science , category_Id : 1 , subcategory_id : 1 
     subcategoty : ss, category_Id : 1 , subcategory_id : 2 

答えて

0

は、なぜあなたはOneToOne関係を持っていますか?あなたが提供する入力を見て私は以下のようにする必要があります。

Entity 
@Table(name = "sub_category") 
public class SubCategory { 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "subcategory_id") 
    private int subCategoryId; 

    @Column(name = "subcategory") 
    private String subCategory; 

    @ManyToOne 
    @JoinColumn(name = "category_id") 
    private Category category; 
} 

カテゴリクラスは私のものと同じですか?

Entity 
@Table(name = "category") 
public class Category{ 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "category_id") 
    private int categoryId; 

    @Column(name = "category") 
    private String category; 
} 

これで、カテゴリクラスに新しいレコードを追加するべきではありません。 また、すべての関連付けを保存するようにHibernateに指示するCascadeType.ALLを削除する必要があります。

+0

私はあなたの提案を試みましたが、運はありません.. ManyToOneの関係は私の要求に対してうまくいくのですか、それとも1つずつ気をつける必要がありますか?私の要件を達成するための他の方法はありますか? – user1942574

+0

運がいいですか?つまり、カテゴリテーブル内に新しい行が追加されますか? カテゴリに1つのサブカテゴリしかない場合は、OneToOne関係を保持して、CascadeType.ALL属性を単純に削除する必要があります。同様に '@ OneToOne' ...実際に何が起こっているかを見るためにコードを追加することも役に立ちます。 –

+0

私は自分の質問を更新しました。 – user1942574

関連する問題