0
我在Hibernate類是這樣的:Hibernate的標準,根據最新的事件選擇順序
@Entity
class Order{
private MyPattern pat;
@Id
private int id;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "order_id")
private List<Event> events;
public DetachedCriteria getCriteria() {
//here I create criterias
}
}
@Entity
class Event{
@Column
@Temporal(value = javax.persistence.TemporalType.DATE)
private Date date;
@Id
private int id;
@Column
private String name;
}
我需要的是從MyPattern爲了創造的DetachedCriteria(詳細結構並不重要)。我有這個部分實現,但我現在的問題是隻選擇具有最新event.name的訂單,如模式中的一個。我認爲也許選擇行與nevest日期會有所幫助,但我只是無法弄清楚,如何在標準中做到這一點。所以我願意接受解決方案和幫助。謝謝
編輯: 我有要求,這是秩序。我必須用正確的Order實例(根據模式的內容)做出響應。例如:客戶只請求已發貨的訂單。所以我需要選擇名稱爲「已發貨」的具有最新事件的訂單。
DetachedCriteria dc=DetachedCriteria.forClass(Order.class,"or").CreateAlias("events","eve");
dc.add(Restriction.eq("eve.name","Shipped"));
orders=dc.getExecutableCriteria(session).list();
Basicky此代碼應該做的伎倆,但它有一個大缺陷。它甚至返回「交付」的訂單,因爲訂單中的事件是List,其中包含訂單上的每個事件。所以像,也許簡單的解決方法「的基礎上按日期排序,事件名稱模式&選擇其中的訂單已經出貨event.name =但不是event.name =交付。
感謝您的回覆,但你可以評論你的代碼,我看到在休眠和Netbeans也是不喜歡這種代碼首次根的定義: - /我也要去編輯的問題與示例要清楚我在找什麼。 –
Seth
2011-05-08 16:42:01
@Seth - 看看http://docs.jboss.org/hibernate/stable/entitymanager/refere nce/en/html/querycriteria.html&你能否詳細說明「不喜歡這種類型的代碼」。 – 2011-05-08 17:29:17