2017-05-28 3 views
0

Ich habe Liste, die von einer Join-Tabelle zugeordnet ist. Was ich tun muss, ist die Kombinationen von "Layouts" und "Ansichten" nicht einzigartig und auch jeweils mit einem Index. Ich habe versucht, eine Map<Integer, View> zu machen und irgendwie die Join-Tabelle eine dritte Spalte "ID" zu machen. Was passiert, ist, die Ansichten dieses Layouts zu erhalten und sie mit der ID aus der Join-Tabelle als Schlüssel in der Karte zu füllen.JPA Map Zuordnung zu Join Tabelle mit 3 Spalten

Irgendeine Idee, wie man das macht, oder vielleicht eine bessere Idee für das, was ich brauche?

@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) 
@JoinTable(
    name = "layout_view", 
    joinColumns = {@JoinColumn(name = "layout_id", nullable = false)}, 
    inverseJoinColumns = {@JoinColumn(name = "view_id", nullable = false)} 
) 
private List<View> views; 

Was ich vorstellen:

@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) 
@JoinTable(
    name = "layout_view", 
    joinColumns = {@JoinColumn(name = "layout_id", nullable = false)}, 
    inverseJoinColumns = {@JoinColumn(name = "view_id", nullable = false)} 
    //some code for third column and populating it as keys 
) 
private Map<Integer, View> views; 
+0

Wozu dient diese Ganzzahl? Ist es nur, um die Reihenfolge der Ansichten zu bewahren? Wenn nicht, wofür ist es? Außerdem ist int ein primitiver Typ. Sie können es nicht als generischen Typ verwenden. –

+0

Ja, tut mir leid wegen der Int in der Map. Ich würde natürlich Integer benutzen. Für was es ist - ich muss in der Lage sein, die Reihenfolge zu ändern und es auch als eindeutigen Schlüssel zu haben, so dass ich mehrere gleiche Ansichten für ein Layout haben kann. –

+1

Sie können bereits mehrere gleiche Ansichten für ein Layout verwenden, indem Sie wie üblich eine Liste verwenden. Um die Reihenfolge zu erhalten (und ändern zu können), siehe https://docs.oracle.com/javaee/7/api/javax/persistence/OrderColumn.html und https://docs.jboss.org/hibernate/orm /current/userguide/html_single/Hibernate_User_Guide.html#collections-list. Die gleiche Dokumentation beschreibt auch, wie Sie Ihre ursprüngliche Idee mit einer Karte implementieren, wenn Sie das wirklich wollen. –

Antwort

1

Sie können bereits mehrere gleiche Ansichten für ein Layout haben, indem Sie eine Liste mit, wie Sie tun.

Um die Reihenfolge zu erhalten (und ändern zu können), siehe OrderColumn und Hibernate documentation about ordered lists.

Die gleiche Dokumentation beschreibt auch, wie Sie Ihre ursprüngliche Idee mit einer Karte implementieren, wenn Sie das wirklich wollen.

Verwandte Themen