2017-06-29 3 views
2

Ich versuche, eine Zuweisung mithilfe von Spring Boot- und Federdaten durchzuführen. Ich habe 2 Entitäten Organisation und Standort.So speichern Sie eine Unterentität einer Entität mithilfe von Federdaten

1.Organization

public class Organization { 
    private Long id; 
    private String name; 
    private Location location; 
} 

public class Location { 
    private Double lattitude; 
    private Double longitude; 
} 

Und meine Datenbank-Tabelle ist wie:

CREATE TABLE organization (
    id int primary key, 
    organization_name varchar(255), 
    organization_location_lat double, 
    organization_location_long double 
) 

Jetzt habe ich Federdaten bin mit diesem Unternehmen in database.In normalen Szenario bestehen bleiben nur die speichern Aufruf (Organisation org) Methode würde die Daten beibehalten, aber ich bin mir nicht sicher, wie die Organisationsdaten mit dem Standort gespeichert werden. Kann mir jemand dabei helfen?

Antwort

2

Entitäten haben eine Identität. Eingebettete Dateien haben keine eigene Identität und können nur für die Verwendung der Entitäten abgefragt werden.

Ihre Organisation ist @Entity Die Lizenz sollte @Embeddable sein (da es keine ID gibt und Teil der Tabelle Organization ist).

Aber ich denke es ist nicht Ihr Fall nach Ihrer Tabelle, wenn Location nur Teil von Organization ist und keinen eigenen Lebenszyklus haben (existiert nur innerhalb der Organisation). Wenn der Standort einen Lebenszyklus außerhalb der Organization hat, sollte es Entität sein (dann sollte ID für Location wie für Entität sein) und Sie benötigen eine Beziehung zwischen Organization und Location, Abhängigkeit von Fall, wie Sie verwenden, wie eins zu eins oder viele zu eins und verwenden sascade Typ für Standort

public class Organization { 
    @Id 
    private Long id; 
    @Column 
    private String name; 
    @Embedded 
    private Location location; 
} 

@Embeddable 
public class Location { 
    private Double lattitude; 
    private Double longitude; 
} 

siehe Beispiel https://docs.jboss.org/hibernate/orm/5.1/userguide/html_single/chapters/domain/embeddables.html

+0

Dank für die schnelle Antwort !! In meinem Fall ist Standort Teil der Organisation, es wird keine eigene Existenz von sich selbst haben, aber es wird ein Teil von wenigen anderen Entitäten sowie Auto, Person usw. sein. Also ich nehme an, dass @Embeddable in all diesen Fällen anwendbar ist auch? –

+0

ja, es ist anwendbar. Ich schrieb über @entity für den Standort wie im allgemeinen Fall :) Wir beginnen mit Embeddable am Anfang, und nach ein paar Monaten bewegen sich zu separaten Entität, wie wir bekommen, für den Moment, haben wir eine Menge Daten doppelt für den Standort. – xyz

+0

Wenige andere Entitäten wie Auto, Person usw. - Denken Sie über Basisklasse mit Standort erstellen und erstreckt sich davon, wenn es für Sie akzeptabel ist – xyz

Verwandte Themen