2012-03-31 18 views
3

Ich versuche, eine einfache JoinTable-Operation in Hibernate auszuführen, und es gibt mir passt. Ich habe eine Tabelle, die eine Entität namens "Person" darstellt. Ich habe eine andere Tabelle, die Sozialversicherungsnummern (zum Beispiel) darstellt. Ich möchte Sozialversicherungsnummer als String (es ist VARCHAR2) eine Eigenschaft auf der PersonEntity sein. PersonEntity funktioniert gut ohne den folgenden Code. Hier ist, was ich versuche zu tun.Hibernate Einfache JoinTable ohne Entität

@JoinTable(name = "PERSON_ID_X_SSN", 
       joinColumns = {@JoinColumn(name = "PERSON_ID")}) 
    @Column(name="SSN", nullable=false, updatable=false) 
    private String social; 

Die PERSON_ID_X_SSN Tabelle ist einfach dies:

PERSON_ID, SSN 

Alles funktioniert gut ohne diesen Code. Sobald ich es in der gesamten Entität hinzufüge, ist null. Ich würde es vorziehen, keine separate Entität für PERSON_ID_X_SSN zu bilden ... bitte helfen Sie! Danke

Antwort

3

@JoinTable ist für die Angabe der Tabelle, die verwendet wird, um Beziehungen zwischen Entitäten zu erhalten.

In diesem Fall gibt es keine Beziehung zwischen Entitäten, aber eine Entität, die in zwei Tabellen beibehalten werden sollte. @SecondaryTable ist Annotation, die diesen Zweck dient. Idee ist, sekundäre Tabelle (oder mehr als eine über @SecondaryTables) für Entität anzugeben und den Namen der Tabelle in @Column-Annotation explizit anzugeben, wenn eine andere Tabelle als das primäre Attribut verwendet werden soll.

In Ihrem Fall so etwas wie folgt funktioniert:

@Entity 
@Table(name="CUSTOMER") 
@SecondaryTable(
    name="PERSON_ID_X_SSN", 
    [email protected](name="PERSON_ID")) 
public class Person { 
    @Column(table="PERSON_ID_X_SSN", name="SSN") 
    private String social; 
    ... 
} 

}

Verwandte Themen