2017-03-16 3 views
1

Ich habe zwei Entitäten, einen Kunden und eine CustomerTransaction. Ich möchte in CustomerTransaction zwei Kunden-IDs als Fremdschlüssel speichern können (einen für den Kunden, der die Transaktion initiiert, und einen für den Kunden, der die Transaktion erhält). Ich möchte auch, dass jedes Customer-Objekt eine Liste aller CustomerTransactions enthält, mit denen sie verbunden sind.Mehrere Fremdschlüssel von derselben Entität? (JPA Hibernate)

Customer.java

@Entity 
public class Customer { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    private String firstName; 
    private String lastName; 

    //@ManyToOne ? 
    private List<CustomerTransaction> customerTransaction; 

    //getters and setters 
} 

CustomerTransaction.java

@Entity 
public class CustomerTransaction { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    //@OneToMany ? 
    private Customer initiater; 
    //@OneToMany ? 
    private Customer receiver; 

    private String transactionDetails; 

    //getters and setters 
} 

Wie kann ich die JPA-Annotationen so einrichten, dass jede Transaktion eine Fremdschlüssel-ID des Kunden enthält initiieren und zu erhalten?

Antwort

1

initiater und receiver müssen mit ManyToOne annotiert werden (viele Transaktionen werden von dem einen Initiator initiiert).

Und Sie brauchen zwei OneToMany in Customer: eine für die initiierten tranactions (OneToMany(mappedBy = "initiater")) und eine für die empfangenen Transaktionen. (OneToMany(mappedBy = "receiver")

Sie können nicht nur eine Liste haben (und es ist wahrscheinlich nicht wünschenswert sowieso)

+0

Vielen Dank für die Hilfe! – DraegerMTN

Verwandte Themen