基本的に、トルク基準はこのタイプのクエリには適していないと思います。まず、特定の列を選択します。基準は通常、クエリされたテーブルのトルクオブジェクトを選択するために使用されます。ただし、村のレコードを使用して特定の列を選択できるため、基準を使用してカスタム列を選択することは実際には可能ですが、面倒です*。第二に、そして最も重要なことは、私は左の参加が可能であるとは思わない。基準は、基本的にサブクエリAFAIKとしてJOINを使用するように設定されています。
基本的な基準「結合」を使用したサンプルサブクエリは次のようになります。
Criteria criteria = new Criteria();
criteria.add(TABLEA.COLUMNA,somevalue);
criteria.add(TABLEB.COLUMNA,somevalue);
criteria.addJoin(TABLEA.COLUMNB,TABLEB.COLUMNB);
TABLEA.doSelect(criteria);
これにより、テーブルAからエントリが選択されます。テーブルBの列a = somevalueであり、テーブルaの列b=テーブルbの列bです。
全体として、過度に複雑な基準については直接クエリをお勧めします。
public static List<Object> doDynamicQuery(String dynamicQuery){
Connection connection = null;
try{
connection = Torque.getConnection(Torque.getDefaultDB());
connection.setReadOnly(true);
PreparedStatement statement = connection.prepareStatement(dynamicQuery);
ResultSet set = statement.executeQuery();
QueryDataSet dataSet = new QueryDataSet(set);
return BasePeer.getSelectResults(dataSet);
}
catch(Exception e){
log.error(e);
return null;
}
finally{
Torque.closeConnection(connection);
}
}