Frage

gibt es eine einfache Möglichkeit, einige der Felder in einer anderen Klasse und Tabelle mit Hibernate zu bestehen.

Zum Beispiel habe ich eine Person Klasse mit name, surname, email, address1, address2, city, country Felder aus. Ich möchte, dass meine Klassen sein:

public class Person
{
   private String name;
   private String surname;
   private String email;
   private Address address;
   // ..
}

public class Address
{
   private Person person; // to whom this belongs
   private String address1;
   private String address2;
   private String city;
   private String country;
   // ..
}

und ich möchte in einem anderen Tisch-Adresse speichern. Was ist der beste Weg, um dies?

zu erreichen

Edit: Ich bin mit Anmerkungen. Es muss nicht so sein, wie ich beschrieben habe ich für die besten Praktiken suchen.

Edit 2: Was wird die Id der Adresse sein

PS. Wenn es einen Weg gibt Adresse unveränderbar zu machen (zu Verwendung als Wertobjekt), die noch besser ist, oder vielleicht auch nicht, weil ich alles von falschen Perspektive dachte:)

War es hilfreich?

Lösung 2

Mit Hibernate 3.5 ist es möglich, definieren Fremd Generatoren (aka. JPA-Mapping), Details sind hier .

Es ist ziemlich geradlinig Person Serializable implementieren sollten dann @Id Anmerkung zu person hinzugefügt wird.

@Entity
@AccessType(value = "field")
@Table(name = "addresses")
public class Address
{
   @Id
   @OneToOne
   @JoinColumn(name = "person_id")
   private Person person;
   // ...
}

Es gibt eine Alternative, aber ich mag die erste:

@Entity
@AccessType(value = "field")
@Table(name = "addresses")
public class Address
{
   @Id
   private int personId;

   @MapsId
   @OneToOne
   @JoinColumn(name = "person_id")
   private Person person;
   // ...
}

Andere Tipps

  1. Karte Address als Einheit und fügen Sie einen Primärschlüssel (ein automatisch generierter id)
  2. Karte, die die Beziehung zwischen Person und Address als one-to-one (@OneToOne auf jedes Feld)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top