hibernate迭代表中满足连接的多表的所有行

时间:2012-07-27 02:34:25

标签: hibernate hibernate-mapping

我是hiberante的新手。需要指出正确的方向。

我需要遍历表“target_table”中的所有记录,其中存在基于其他表的其他约束

提供所需数据记录的SQL是

select target_table.id, .... 
  from  person,  
        target_table, 
        another_table 
 where person.id = target_table.person_Id 
   and target_table.dropEventId = another_table.id 
   and another_table.to_Vendor_Timestamp < to_date('Jul 29 2012','MON dd YYYY') 
   and person.identifyer = 'foobar'; 

不确定获取这些记录的最佳方式。有人可以推荐正确的方法吗? 目前我正在开始做事

的内容
Criteria criteria = session.createCriteria(TargetTable.class);
Criteria personCriteria = criteria.createCriteria("person");
personCriteria.add(Restriction.equal("idenifyier",identifyier);
Criteria anotherTableConstriant = constriant.add("another_table");
anotherTableConstraint.add(Restriction.lessthan("toVendorTimeStamp", someDateObject);

但我如何得到其余的约束。

1 个答案:

答案 0 :(得分:0)

永远不要认为Hibernate是“使用SQL / DB的另一种方式”。你应该始终确保你有适当的实体和实体之间的关系。

似乎从你的例子中,你应该有一个Target-&gt; Another(称为dropEvent)和Target-&gt; Person(假设它是人)的关系。

HQL就像是

from Target t
where t.person.identifier = :someId
  and t.dropEvent.vendorTimeStamp < :someTime

如果您发现自己仍然总是想到加入表等,那么很可能您没有正确使用Hibernate。在这种情况下,我发现Hibernate不会帮助你。如果您的应用程序是以这种以数据库为中心的思维模式设计的,请考虑使用iBatis。