NHibernate - 两张桌子的ICriteria?

时间:2011-12-30 17:31:09

标签: nhibernate fluent-nhibernate

我正忙着为两张桌子创建ICriteria。 我试图模仿的SQL是下面的。 反正有没有这样做? 我一直在尝试CreateAlias,Subqueries和其他一些东西但是我总是遇到错误。 我曾尝试在nhusers Google小组上发帖,但没有得到太多帮助。 谢谢。

SELECT *
FROM Echo_File_status efs, Data_DELETION_PARAMETER ddp 
WHERE 
   efs.EFS_PRODUCT_CODE = DDP.DDP_PRODUCT_CODE(+) 
AND 
   DDP.DDP_PROCESS_TYPE = 'D' 
AND 
   ( ( trunc(nvl(efs.efs_file_create_date, sysdate)) > sysdate - dp.DDP_DAYS_ON_LINE ) or 
   ( efs.efs_status_code != 'ACKED' ) ) 
ORDER BY efs.efs_product_code, decode(efs.efs_status_code, 'READY', 1, 'TRANS', 2 , 'FAERR', 3, 'FCERR', 4, 'PRERR', 5, 'TRERR', 6, 'PREP', 7, 'PRCOM', 8, 'FCREA', 9 , 'TRCOM', 10, 'ACKED', 11, 1), 
      efs.efs_file_create_date DESC 

2 个答案:

答案 0 :(得分:1)

为什么使用icriteria而Hql很容易使用?加入该代码属性上的对象。

答案 1 :(得分:0)

我个人对这类问题的看法是,你应该继续在纯SQL中编写类似的表达式,因为使用NHibernate标准API读取和维护只会更糟。

只要您对查询有测试覆盖率,就可以安全地隐藏该实现细节。