2016-03-29 24 views
-1

Ich habe Klasse Artikel (auf PRODUCT Tabelle entspricht)Sortieren nach Verwendung von Zwischentabellenspalte in JPA

Class Product { 
    @Id 
    @Column(name = "PRODUCT_ID") 
    private Long id; 

    @Column(name = "NAME") 
    private String name; 

    //other attributes 
} 

ich eine andere Klasse Besitzer haben (entsprechend BESITZER Tabelle)

Class Owner{ 
    @Id 
    @Column(name = "OWNER_ID") 
    private Long id; 

    @Column(name = "NAME") 
    private String name; 
} 

Ich habe eine Zwischentabelle namens PRODUCT_OWNER (ein Produkt kann mehrere Besitzer haben).

Die PRODUCT_OWNER Tabelle ist in etwa so.

_______________________________________ 
| PRODUCT_ID | OWNER_ID | DISPLAY_ORDER | 
|____________|__________|_______________| 

In meiner Produktklasse I eine Erklärung beitreten geschrieben habe, durchzuführen unter Verwendung von Zwischen PRODUCT_OWNER Tabelle beitreten

@OneToMany(targetEntity = Owner.class, cascade = { CascadeType.ALL, CascadeType.MERGE }, fetch = FetchType.LAZY) 
@JoinTable(name = "PRODUCT_OWNER", 
      joinColumns = { @JoinColumn(name = "PRODUCT_ID") }, 
      inverseJoinColumns = { @JoinColumn(name = "OWNER_ID") }) 
private Set<Owner> productOwners = new HashSet<Owner>(0); 

Ich habe eine Spalte in meiner Zwischentabelle als Display_Order. Ich möchte das endgültige Set productOwners mit DISPLAY_ORDER sortieren. Ist dies im obigen Ansatz möglich? Bitte um Rat.

+0

Bitte lassen Sie mich zu Ihrem JoinTable hinzuzufügen wissen, ob hier irgendetwas nicht klar ist, statt downvoting. – Vivek

+0

Hallo, ist das Problem, dass eine schlechte Reihenfolge oder eine Ausnahme macht? Wie auch immer, ich denke, wenn Ihre Zwischentabelle eine extra Spalte haben sollte, könnten Sie vielleicht eine Entität dafür erstellen. – cralfaro

+1

Also wo wird dieser "DISPLAY_ORDER" von? weil JPA es nicht verwaltet. Und wenn JPA es nicht verwaltet, dann werden Sie nicht dadurch bestellen –

Antwort

0

Hallo Sie können versuchen, diese

@OneToMany(targetEntity = Owner.class, cascade = { CascadeType.ALL, CascadeType.MERGE }, fetch = FetchType.LAZY) 
@JoinTable(name = "PRODUCT_OWNER", 
     joinColumns = { @JoinColumn(name = "PRODUCT_ID") }, 
     inverseJoinColumns = { @JoinColumn(name = "OWNER_ID") }) 
@OrderColumn(name="DISPLAY_ORDER") 
private List<Owner> productOwners = new HashSet<Owner>(0);