Как выбрать столбец с помощью Hibernate?
Я хотел бы выбрать один столбец вместо целого объекта, используя Hibernate. Пока у меня есть это:
List<String> firstname = null;
firstname = getSession().createCriteria(People.class).list();
Моя проблема в том, что приведенный выше код возвращает целую таблицу People как объект, а не просто "firstname". Я не уверен, как указывать только для возврата "firstname" вместо всего объекта.
Ответы
Ответ 1
Вы можете настроить проекцию следующим образом:
.setProjection(Projections.property("firstname"))
С этим вы можете получить только первое имя.
Я нашел еще одну ссылку на стек с тем же сценарием. Надеюсь, это также поможет Как использовать критерии спящего режима для возврата только одного элемента объекта вместо всего объекта?
Ответ 2
Если вам нужно запросить 2 или более столбца и получить значения из запроса, это способ сделать это:
....
crit.setProjection(Projections.property("firstname"));
crit.setProjection(Projections.property("lastname"));
List result = crit.list();
...
for (Iterator it = result.iterator(); it.hasNext(); ) {
Object[] myResult = (Object[]) it.next();
String firstname = (String) myResult[0];
String lastname = (String) myResult[1];
....
}
Ответ 3
Вы можете использовать ProjectionList, если хотите выполнить базовую проекцию условия
например
ProjectionList prjection = Projections.projectionList();
if(abc){
prjection.add(Projections.property("firstname"));
}
else if(xyz){
prjection.add(Projections.property("lastname"));
}
........
criteria.setProjection(prjection);