我有一个班级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。然而,当我循环交易操作时,我得到的交易包含今天的任何操作,但我也获得了该交易的所有操作,即使操作是从另一天开始的。所以它不符合条件。
有任何线索吗?
提前致谢!!
答案 0 :(得分:1)
trade.operations
始终包含该交易的所有操作。 hibernate不会为您提供部分初始化子集合的交易,因为它会破坏更改跟踪并导致许多混乱。所以hibernate最好的办法就是为你提供成对的交易和匹配操作。
我将创建一个包含交易和匹配操作所需的所有属性的类,并使用AliasToBeanTransformer。