0

我是新来的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);

但是我如何获得其余的约束。

4

1 回答 1

0

永远不要将 Hibernate 视为“使用 SQL/DB 的另一种方式”。您应该始终确保您拥有正确的实体以及实体之间的关系。

从您的示例看来,您应该具有 Target->Another(称为 dropEvent)和 Target->Person(假设是人)的关系。

HQL 就像

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

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

于 2012-07-27T03:36:14.570 回答