2012-02-01 86 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