0

私はハイベランテが初めてです。正しい方向に向ける必要があります。

他のテーブルに基づく追加の制約があるテーブル「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 は役に立たないことがわかりました。アプリがそのような DB 中心の考え方で設計されている場合は、iBatis の使用を検討してください。

于 2012-07-27T03:36:14.570 に答える