В принципе, я не думаю, что критерий крутящего момента подходит для этого типа запроса.
Прежде всего вы выбираете конкретные столбцы. Критерии обычно используются для выбора объектов крутящего момента для запрашиваемой таблицы. Вы можете выбрать определенные столбцы, используя деревенские записи, так что на самом деле можно выбрать пользовательский столбец, используя критерии, но громоздкие *.
Во-вторых, и это самое важное, я не верю, что ЛЕВОЕ соединение возможно. Критерии настроены на использование JOIN в основном как подзапрос AFAIK.
Примером подзапроса с использованием базовых критериев «соединение» будет
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 и таблица столбец 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);
}
}