使用hibernate从数据库中检索记录

时间:2012-02-01 23:59:26

标签: java hibernate

我有一个班级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();

我得到一个对象数组,其中每个元素都包含操作和交易实例。

我如何检索记录作为一系列交易(与第一个选项相同)的条件(与第二个选项相同)?


我尝试过:选择Trade作为交易内部加入trade.operations的交易作为操作,使用to_char(operation.datetime,'yyyyMMdd')= to_char(sysdate,'yyyyMMdd')按order.datetime命令

它很有效,谢谢javatestcase。然而,当我循环交易操作时,我得到的交易包含今天的任何操作,但我也获得了该交易的所有操作,即使操作是从另一天开始的。所以它不符合条件。

有任何线索吗?

提前致谢!!

1 个答案:

答案 0 :(得分:1)

trade.operations始终包含该交易的所有操作。 hibernate不会为您提供部分初始化子集合的交易,因为它会破坏更改跟踪并导致许多混乱。所以hibernate最好的办法就是为你提供成对的交易和匹配操作。 我将创建一个包含交易和匹配操作所需的所有属性的类,并使用AliasToBeanTransformer。