2017-06-07 3 views
0

Ich lerne Spring Data JPA und einige Probleme mit der Beziehung zwischen diesen beiden Tabellen Gründung:Spring Data JPA Beziehung Anmerkungen

  • Produkttabelle mit Spalten-ID, Name, product_type_id
  • product_type Tabelle mit Spalten-ID , Name

Ein Produkt kann nur einen Typ haben. Ein Typ kann mit vielen Produkten verknüpft werden.

Wo würde ich die Anmerkungen von @OnetoMany und @ManytoOne in meinen Entitätsklassen verwenden?

+0

Lesen Sie grundlegende JPA (nichts mit Frühling zu tun) Dokumentation. http://www.datanucleus.org/products/accessplatform_5_1/jpa/mapping.html#one_many_relations –

Antwort

1

Für die Situation erwähnt Sie in Ihrer Frage Stellen haben sollten, Ihre Einheiten sollten wie:

@Entity 
public class Product { 

    @Id 
    @GeneratedValue 
    private Long id; 

    private String name; 

    @ManyToOne 
    private ProductType type; 

    // Getters and setters 
} 
@Entity 
public class ProductType { 

    @Id 
    @GeneratedValue 
    private Long id; 

    private String name; 

    @OneToMany(mappedBy = "type") 
    private List<Product> products; 

    // Getters and setters 
} 
0

Entität Produkt sollte Feld ProductType mit Annotation @ManyToOne haben. Entity Product Feld mit Anmerkung @OneToMany (mappedBy = 'product')

0

Cassio Mazzochi Molin des Antwort sollte für Sie arbeiten, nachdem Sie den kleinen Fehler korrigiert haben, den er in der umgekehrten Entität (Ie ProductType-Klasse) gemacht hat. Der @OneToMany sollte dem Variablentyp in der besitzenden Entität (d. H. Produktklasse) und nicht productType zugeordnet werden. So sollte diese Linie

@OneToMany(mappedBy = "type") 

sein Ich werde auch vorschlagen, dass Sie ein gutes Tutorial Buch über JPA 2 abholen und studieren, speziell die Rolle Beziehung, weil es viele Regeln, um es, die Sie nur durch das Studium auf eigene Faust lernen sonst wirst du weiterhin Fragen stellen, vertrau mir.

Pro JPA 2: Das Beherrschen der JAVA Persistence API von Apress ist ein sehr gutes Tutorial, das Ihnen helfen kann.

+0

Danke für das Zeigen :) –