我需要使用eclipselink以有序方式讀取複雜模型。順序是mandantory,因爲它是一個巨大的數據庫,我想在jface tableview中輸出一小部分數據庫。嘗試在加載/查詢線程中重新排序需要太長的時間,並且在LabelProvider中對其進行排序會阻塞UI線程太多時間,所以我想如果Eclipselink可以這樣使用,數據庫會對它進行排序,那可能會給我我需要的表現。不幸的是,對象模型不能:-(Eclipselink以有序方式讀取複雜對象模型
該模型被改變爲這樣的:
@SuppressWarnings("serial")
@Entity
public class Thing implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private int id;
private String name;
@OneToMany(cascade=CascadeType.ALL)
@PrivateOwned
private List<Property> properties = new ArrayList<Property>();
...
// getter and setter following here
}
public class Property implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private int id;
@OneToOne
private Item item;
private String value;
...
// getter and setter following here
}
public class Item implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private int id;
private String name;
....
// getter and setter following here
}
// Code end
在表中查看y軸或多或少與查詢
Query q = em.createQuery("SELECT m FROM Thing m ORDER BY m.name ASC");
創建
使用Thing對象中的「name」屬性作爲標籤
在表格視圖中,x軸或多或少地通過查詢創建
Query q = em.createQuery("SELECT m FROM Item m ORDER BY m.name ASC");
使用Item對象的「name」屬性作爲標籤。
每個單元具有值
Things.getProperties().get[x].getValue()
不幸的是列表中的「屬性」不是有序的,這樣的細胞和值x軸列編號的組合(x)是不一定正確。因此,我需要以和我訂購X軸標籤相同的方式來排列列表「屬性」。
而這正是我不知道它是如何完成的。因此,查詢Thing對象應返回「Item」對象的列表「屬性」「Order by Name ASC」但。我的想法就像查詢兩個JOIN一樣。與財產和項目,但不知何故,我無法得到它的工作。
謝謝你的幫助和你的想法來解決這個謎。
謝謝! 不幸的是我得到這個錯誤: 「內部異常:異常[EclipseLink-7217](Eclipse持久性服務 - 2.0.1.v20100213-r6600):org.eclipse.persistence.exceptions.ValidationException 異常說明:按值排序[名稱],在實體[class Thing]的元素[properties]中指定,是無效的。目標實體[class Property]中不存在具有該名稱的屬性或字段。 看來eclipselink不知道Item.name中的名稱字段呢。 – Raven 2010-04-01 13:01:10
但是我將@OrderBy添加到Item.name,這沒有幫助。 Eclipselink仍然以無序方式讀取列表。:-( – Raven 2010-04-01 13:07:39
對不起,誤解了這個問題,EclipseLink支持@OrderBy,但對你的情況沒有幫助。 – lexicore 2010-04-01 13:08:20