2012-02-22 61 views
0

我想通過日期時間獲取與他們的收集順序的實體列表,但我不明白。這是我的查詢:準則查詢沒有訂單使用休眠

trades = session.createCriteria(Trade.class) 
    .createAlias("operations", "operations", CriteriaSpecification.INNER_JOIN) 
    .add(Restrictions.between("operations.datetime", start, end)) 
    .addOrder(Order.asc("operations.datetime")) 
    .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY) 
    .list(); 

根據冬眠這些都是疑問:

select 
    this_.MUREX_ID as MUREX1_0_1_, 
    this_.PORTFOLIO as PORTFOLIO0_1_, 
    this_.TYPE as TYPE0_1_, 
    operations1_.ID as ID1_0_, 
    operations1_.COMENT as COMENT1_0_, 
    operations1_.DATETIME as DATETIME1_0_, 
    operations1_.GBO_ID as GBO4_1_0_, 
    operations1_.OPERATION as OPERATION1_0_, 
    operations1_.OPERATION_ID as OPERATION6_1_0_, 
    operations1_.OPICS_ID as OPICS7_1_0_, 
    operations1_.STATUS_GBO as STATUS8_1_0_, 
    operations1_.STATUS_MUREX as STATUS9_1_0_, 
    operations1_.MUREX_ID as MUREX10_1_0_ 
from 
    PGT_NY.T_PGT_NY_BLOTTER_TRADES_S this_, 
    PGT_NY.T_PGT_NY_BLOTTER_OPERATIONS_S operations1_ 
where 
    this_.MUREX_ID=operations1_.MUREX_ID and 
    operations1_.DATETIME between ? and ? 
order by operations1_.DATETIME asc 

和:

select 
    operations0_.MUREX_ID as MUREX10_1_, 
    operations0_.ID as ID1_, 
    operations0_.ID as ID1_0_, 
    operations0_.COMENT as COMENT1_0_, 
    operations0_.DATETIME as DATETIME1_0_, 
    operations0_.GBO_ID as GBO4_1_0_, 
    operations0_.OPERATION as OPERATION1_0_, 
    operations0_.OPERATION_ID as OPERATION6_1_0_, 
    operations0_.OPICS_ID as OPICS7_1_0_, 
    operations0_.STATUS_GBO as STATUS8_1_0_, 
    operations0_.STATUS_MUREX as STATUS9_1_0_, 
    operations0_.MUREX_ID as MUREX10_1_0_ 
from 
    PGT_NY.T_PGT_NY_BLOTTER_OPERATIONS_S operations0_ 
where 
    operations0_.MUREX_ID in (
     select 
      this_.MUREX_ID 
     from 
      PGT_NY.T_PGT_NY_BLOTTER_TRADES_S this_, 
      PGT_NY.T_PGT_NY_BLOTTER_OPERATIONS_S operations1_ 
     where 
      this_.MUREX_ID=operations1_.MUREX_ID and 
      operations1_.DATETIME between ? and ? 
    ) 

任何幫助將是非常有用的。

在此先感謝!

回答

1

對我來說很不錯。你應該得到一個貿易返回的列表,它們按照它們的操作的日期時間進行排序,這意味着具有小於日期時間的操作的交易先到達,然後是具有次最小操作的交易。

交易對象上的集合按映射中所述進行排序。你必須單獨分類。 Hibernate在加載時不會這樣做,因爲它會中斷對列表,索引集合等的更改跟蹤。