2012-04-07 101 views
0

這是一個後續問題:JPA:@OrderColumn和實體的可見狀態?

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

,我指的是@OrderColumn Java文檔:

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

有一樣的JPA規範2什麼寫入文本部分11.1.39 OrderColumn註釋

零件「訂單欄不可見作爲實體狀態的一部分」是什麼意思究竟是?對此有很多解釋的餘地​​。

這是否意味着訂單欄不能是定義的任何FK和/或PK的一部分?或者只有不在FK(PK允許)?一個實體的狀態包含什麼? AFAIK JPA規範沒有對此進行定義。

由於

回答

1

順序列不是在實體類(ES)的場,因此它是不可見的(本身)。

+0

嗯,只是我已經知道的更好。那麼,這是否有效地意味着,因爲order列總是在另一個表中,所以order列不能是外鍵的一部分,它將被映射到聲明關係字段的實體中?這是否意味着可以在PK中使用這樣的列而不是在另一個表中使用FK? – Kawu 2012-04-07 17:39:35

+2

這樣的列不是實體狀態的一部分。所以它沒有被映射爲實體中的任何東西(PK,常規字段,FK或其他)。它不能被映射。故事結局。 – 2012-04-08 08:49:56

+0

@Kawu,我在這個陳述中看不出任何難理解的東西。實體中沒有字段。很明顯,您可以通過訪問所有者中的列表字段來獲取列表中的位置(所以訂單)。這就是全部。當天清除 – DataNucleus 2012-04-08 17:12:47

1

OPENJPA。請看這個代碼,這是瞭解最好的方法

//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; 

這將得到一個有序列表(子表)。 :)

John V,Col