2013-07-29 4 views
-1

Мне нужно получить все первичные ключи таблицы и поместить их в список. Любой метод, который я нашел до сих пор, позволяет мне извлекать каждую запись в качестве объекта, что заставляет меня извлекать их первичные ключи отдельно и добавлять их в список.Как получить все первичные ключи таблицы, используя спящий режим?

Есть ли другой подход для извлечения первичных ключей таблицы и добавления их в список?

Использование следующего кода hibernate возвращает объекты, но мне нужно, чтобы он возвращал список первичных ключей для их хранения в списке pk.

  List pk = new ArrayList(): 
      Criteria criteria = session.createCriteria(MyTable.class, "mytable"); 
      pk = criteria.list(); 

если туЬаЫе выглядит следующим образом

id name value 
1 a  z4 
2 f  o2 

список рк должен быть

[1,2] 

ответ

4

Вы можете просто создать запрос HQL, который возвращает поле, которое вы хотите:

session.createQuery("SELECT mt.id FROM MyTable mt").list(); 

Предполагая, что ваше основное ключевое поле - это имя d id и MyTable - это ваше лицо. Вы также можете сделать это с помощью Criteria и Projections.

2

Есть вообще есть способы достижения этой цели 1) Использование Criteria API 2) Использование HQL 3) Использование Native Query

Из вышеприведенного спящего режима запросов пути, лучше нам (1) и (2) , третий способ зависит от типа базы данных.

1) с использованием критериев API

Criteria criteria = session.createCriteria(MyTable.class, "mytable"); 
criteria.setProjection(Projections.projectionList().add(Projections.property("mytable.id"), "mytable.id")); 

List<Long> ids=criteria.list(); 

2) Использование HQL

Решение уже объяснено Sotirious

3) с использованием собственных Query

session.createSQLQuery(" SELECT mytable.id FROM MyTable mytable ").addScalar("ID","Hibernate.LONG").list(); 
Смежные вопросы