2012-04-07 3 views
0

ist ein Followup Frage:JPA: @OrderColumn und sichtbarer Zustand einer Entität? Diese

Is @ManyToMany(mappedBy = ...) + @OrderColumn supported by the JPA?

Ich beziehe mich auf die @OrderColumn Java-Dokumentation:

http://docs.oracle.com/javaee/6/api/javax/persistence/OrderColumn.html

Der Text gibt es das gleiche wie das, was die JPA 2 spec schreibt im Abschnitt 11.1.39 OrderColumn Annotation.

Was bedeutet der Teil "die Spalte Bestellung ist nicht sichtbar als Teil des Status der Entität" bedeutet genau? Da gibt es viel Raum für Interpretationen.

Bedeutet das, dass die Bestellspalte nicht Teil von definierten FKs und/oder PKs sein darf? Oder nur nicht in FKs (PK erlaubt)? Was beinhaltet der Zustand eines Unternehmens? AFAIK die JPA-Spezifikation definiert das nicht.

Dank

Antwort

1

Die Reihenfolge Spalte ist kein Feld in der Klasse Entity (n), so ist es nicht sichtbar ist (als solche).

+0

Hmmm, kaum besser, was ich schon weiß. Bedeutet das effektiv, da die Order-Spalte immer in einer anderen Tabelle ist, dass die Order-Spalte nicht Teil eines Fremdschlüssels sein darf, der in der Entity, die das Relationship-Feld deklariert, abgebildet würde? Heißt das, dass es in Ordnung ist, eine solche Spalte als PK zu haben, aber nicht als FK in der anderen Tabelle? – Kawu

+2

Eine solche Spalte gehört nicht zum Entitätsstatus. Es wird also nicht als irgendetwas in der Entity abgebildet (PK, reguläres Feld, FK oder was auch immer). Es muss nicht zugeordnet werden. Ende der Geschichte. –

+0

@ Kawu, ich sehe nichts schwer zu verstehen in dieser Aussage. Es gibt kein Feld in der Entität. Offensichtlich können Sie auf die Position in der Liste (also die Reihenfolge) zugreifen, indem Sie auf das Listenfeld im Eigentümer zugreifen. Das ist alles, was es gibt. Klar als Tag – DataNucleus

1

OPENJPA. Bitte schauen Sie sich diesen Code an, es ist der beste Weg zu verstehen

//This is in the parent table 
@OneToMany(cascade = CascadeType.ALL, mappedBy = "parentTable", fetch = FetchType.EAGER) 
    @OrderColumn 
    private ArrayList<child_class_type> childTable = new ArrayList<child_class_type>(); 

//This is in the child table 
@ManyToOne(fetch = FetchType.EAGER, optional = false) 
    private parentTableClass parentTable; 

Dies wird eine geordnete Liste (untergeordnete Tabelle) bekommen. :)

John V, Col

Verwandte Themen