2016-07-11 13 views
0
@Entity 
public class A { 
@column("ID") 
private Long id; 
} 

@Entity 
public class B { 
@column("ID") 
private Long id; 
} 

@Entity 
public class C { 
@column("ID") 
private Long id; 

@column("A_ID") 
private Long aID; 

@column("B_ID") 
private Long bID; 
} 

In C Einheit folgende Einsatz sind möglichWie Entitätsbeziehung für folgendes Szenario in Spring-Daten JPA erstellen?

ID A_ID B_ID 
1 1  1 
2 2  1 
3 3  1 
4 1  2 
5 2  2 
6 3  2 

In obigem Fall i Muttergesellschaft erhalten wollen (A oder B) von Kind-Einheit (C)

zB

C c=crepository.findByID(6); 
A a=c.getA(); 
B b=c.getB(); 

Wie erstelle ich eine Beziehung in den obigen Entitäten? Ich hoffe, es ist mit Spring-Daten JPA erreichbar.

+0

haben Sie versucht, 'aID' mit' a' zu ersetzen, die der Klasse 'A' und es mit' OneToOne' annotieren? (und dasselbe Verfahren für "B") – Apostolos

+0

Klassen A und B haben nur die ID-Spalte? – Apostolos

Antwort

0

So etwas wie dies die @OneToOne Anmerkung Nutzung sollte es tun:

@Entity 
public class A { 
    @Column("ID") 
    private Long id; 

    //other columns, getters, and setters 
} 

@Entity 
public class B { 
    @Column("ID") 
    private Long id; 

    //other columns, getters, and setters 
} 

@Entity 
public class C { 
    @column("ID") 
    private Long id; 

    @OneToOne 
    @JoinColumn(name = "A_ID", referencedColumnName = "ID") 
    private A a; 

    @OneToOne 
    @JoinColumn(name = "B_ID", referencedColumnName = "ID") 
    private B b; 

    //other columns, getters, and setters 
}