2012-02-01 89 views
0

我有一個類Trade和子類Operation。它們映射到數據庫中。所以,當我做的:從數據庫使用休眠恢復記錄

trades = session.createQuery("from Trade").list() 

我得到的貿易記錄一個ArrayList,並可以通過我的買賣實例訪問某些交易的操作。

然而,當我這樣做:

trades = session.createQuery(" 
    from Trade as trade 
    inner join trade.operations as operation 
    with to_char(operation.datetime, 'yyyyMMdd') = to_char(sysdate, 'yyyyMMdd') 
    order by operation.datetime" 
).list(); 

我得到的對象數組,其中每個元素都包含操作和買賣實例。

我該如何檢索條件(與第二個選項相同)作爲交易數組(與第一個選項相同)的記錄?


我嘗試:選擇商品從商品貿易內由operation.datetime

加入trade.operations作爲操作用TO_CHAR(operation.datetime, 'YYYYMMDD')= TO_CHAR(SYSDATE, 'YYYYMMDD')順序

它的工作,感謝javatestcase。但是,當我循環交易操作時,我得到的交易包含今天的任何操作,但我也獲得了該交易的所有操作,即使操作是從另一天開始的。所以它不符合條件。

任何線索?

在此先感謝!

+1

您是否嘗試添加「選擇交易」... – javatestcase 2012-02-02 01:19:47

回答

1

trade.operations始終包含該交易的所有操作。 hibernate不會爲您提供部分初始化的子集合的交易,因爲它會打破更改跟蹤並導致許多混亂。所以最好的休眠可以做的是給你成對的交易和匹配操作。 我會創建一個類,其中包含您從交易和匹配操作所需的所有屬性,並使用AliasToBeanTransformer。

+0

感謝您的回覆。這非常有用。我曾經使用SQLAlchemy一個類似於Python中的hibernate的庫。據我記得SQLAlchemy允許你根據條件檢索集合。 – bribon 2012-02-08 12:09:03