2016-11-03 11 views
0

У меня есть много строк в таблице с следующим форматом:Создать критерий для запроса

id name localSize city  country 

1 Robert 12  NY   USA 
2 Bill 12  California USA 
3 Artem 12  Kiev  Ukraine 

Можно получить только одну строку из таблицы, где localSize является уникальным (первым и последним)? Использование критерия или что-то из спящего режима.

+0

В этой ситуации, какую строку вы хотите получить? Или вы хотите получить строку с localSize, которая эта локальная система уникальна в этой таблице? –

+0

получить только первый ряд – JAVAvladuxa

+0

Я добавил ответ ans для получения первой или последней строки. Надеюсь, это поможет вам решить вашу проблему. –

ответ

1

Для получения первой или последней строки вы можете использовать метод, например, следующий.

public List<YourClass> getList() { 
    List<YourClass> list = new ArrayList<YourClass>(); 
    Criteria subCriteria = session.createCriteria(YourClass.class); 
    subCriteria.setProjection(Projections.groupProperty("localSize")); 
    subCriteria.setProjection(Projections.min("id")); 
    List<Integer> mins = subCriteria.list(); 

    Criteria criteria = session.createCriteria(YourClass.class); 
    criteria.add(Restrictions.in("id", mins)); 
    list = criteria.list(); 
    return list; 
} 
+1

Разве это не материализует полный список в блоке 'else if'? – mabi

+0

Я буду обновлять)) Спасибо –

+0

Невозможно отправить localSize в качестве параметра метода, он должен работать по умолчанию, я имею в виду, если таблица имеет 3 строки с localSize = 12 и 5 строк с localSize = 20, она должна возвращать только две строки , один с localSize = 12 и один с localSize = 20 – JAVAvladuxa