2017-01-07 4 views
1

Ich habe zwei Tabellen (Kategorie und Unterkategorie)Vorschlag auf Hibernate Notwendigkeit für die Anforderung

Hier ist meine Kategorie Model

@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; 
} 

und Eingangs

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

es ist das Hinzufügen UPSC als neuer Rekord, wenn ich die verschiedenen Unterkategorien und Kategorien überlasse, bleibt gleich.

Meine Anforderung ist: Wenn ich eine ähnliche Kategorie überlasse, sollte es keinen Datensatz in der Kategorie-Tabelle erstellen.

Fehle ich etwas? Oder gibt es einen anderen Weg, dies zu erreichen?

Erwartetes Ergebnis:

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 

Antwort

0

Warum haben Sie eine OneToOne Beziehung? Wenn Sie die Eingabe sehen, die Sie angeben, sollte sie wie folgt aussehen.

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; 
} 

Ist Ihre Kategorie-Klasse similair zu meinen?

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; 
} 

Es sollte jetzt keine neuen Datensätze zur Kategorie-Klasse hinzufügen. Sie müssen auch CascadeType.ALL entfernen, die Hibernate anweist, alle Verknüpfungen zu speichern.

+0

Ich habe Ihren Vorschlag versucht, aber kein Glück .. Ist ManyToOne Beziehung für meine Anforderung in Ordnung, oder muss ich eine nach der anderen kümmern? oder eine andere Möglichkeit, meine Anforderung zu erfüllen? – user1942574

+0

Kein Glück? Bedeutet es, dass es noch eine neue Zeile in der Kategorietabelle hinzufügt? Wenn Ihre Kategorie nur eine Unterkategorie hat, sollten Sie die OneToOne-Beziehung beibehalten und das CascadeType.ALL-Attribut einfach entfernen. So wie '@ OneToOne' ... Das Hinzufügen von mehr Code, um zu sehen, was tatsächlich passiert, wird auch helfen. –

+0

Ich habe meine Frage aktualisiert, hoffe, dass es Ihnen hilft – user1942574

Verwandte Themen