2016-07-06 29 views
4

Ich brauche zwei Ebean Modellklassen namens "States" und "Children". Ein "State" -Objekt kann verschachtelte Child-Objekte (Liste von Kindern) enthalten.Was ist der einfachste Weg, verschachtelte Objekte in Ebane zu erstellen?

Hier ist die grundlegende Staaten Klasse,

@Entity 
public class States extends Model { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private long id; 

    @Constraints.Required(message = "stateName cannot be null") 
    @Column(nullable = false) 
    private String statename; 

    @Column(nullable = true) 
    private String url; 

    @Column(nullable = true) 
    private String parent; 

    private List<Children> childrenList; 
} 

Hier ist die grundlegende Kinderklasse,

@Entity 
public class Children extends Model { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private long id; 

    @Column(nullable = false) 
    private String statename; 

    @Column 
    private String child; 
} 

Was sind die minimalen Modifikationen sind, die zu diesen Klassen durchgeführt werden sollten staatliche Objekte mit Ebean erstellen ORM? Ich ging durch die Post,

Ebean Query by OneToMany Relationship

Aber es haben sich viele Änderungen vorgeschlagen. Ich möchte nur die minimalen Modifikationen.

Antwort

5

Alles, was ich tun musste, war, eine kleine Änderung an den „Staaten“ Klasse tun,

@Entity 
public class States extends Model { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private long id; 

    @Constraints.Required(message = "stateName cannot be null") 
    @Column(nullable = false) 
    private String statename; 

    @Column(nullable = true) 
    private String url; 

    @Column(nullable = true) 
    private String parent; 

    @OneToMany(cascade = CascadeType.ALL) 
    private List<Children> childrenList; 
} 

Nur ich habe, ist hier ändern getan,

@OneToMany(cascade = CascadeType.ALL) 

ich keine Änderungen zum "Kinder" -Kurs. Vor dem Start der Play-App stelle ich

play.evolutions.enabled = true

in "application.conf" -Datei. Dann habe ich mithilfe der evolution SQL-Datei, die im Ordner "evolution.default" erstellt wurde, das Schema der Datenbank angepasst. Danach wurden "States" -Objekte erfolgreich mit verschachtelten "Children" -Objekten erstellt.

+1

Technisch mit Ebean brauchen Sie nicht ... @GeneratedValue (strategie = GenerationType.IDENTITY) ... und ich würde dies persönlich lassen und Ebean den passenden Identitätsmechanismus für die gegebene DB-Plattform wählen lassen. –

+1

Referenz: http://ebeanorm.github.io/docs/mapping/jpa/id –