Извлечение всех строк таблицы без HQL? - PullRequest
59 голосов
/ 31 января 2012

Я использую Hibernate 4 и хотел бы просто перечислить все строки таблицы.Все решения, которые я нашел, предлагают использовать что-то вроде «from tablename», но я бы хотел избежать жесткого кодирования имен таблиц в строках.

Ответы [ 3 ]

135 голосов
/ 31 января 2012

Вы можете использовать

session.createCriteria(MyEntity.class).list();

, например.

7 голосов
/ 31 января 2012

HQL не использует имена таблиц.Он использует имена сущностей.И имена сущностей являются (по умолчанию) именами классов.Таким образом, вы можете использовать

String hql = "select a from " + TheEntity.class.getSimpleName() + " a";

Но я бы предпочел здесь удобочитаемость, а не безопасность типов, и используйте

String hql = "select a from TheEntity a";

В любом случае вы должны иметь автоматические тесты для ваших запросов.

0 голосов
/ 19 мая 2013

// Hibernate Class

public class CommonDAO<T> {

 Session session = null;
 Transaction transaction = null;
 private Class<T> clazz;

 public CommonDAO(){ //constructor
    session = HibernateUtil.getSessionFactory().openSession();
    transaction = session.beginTransaction();
    Type genericSuperclass = this.getClass().getGenericSuperclass();
    if (genericSuperclass instanceof ParameterizedType) {
      ParameterizedType pt = (ParameterizedType) genericSuperclass;
      Type type = pt.getActualTypeArguments()[0];
      clazz = (Class<T>) type;
    }
 }

 public T listById(Object id) {
  T object = null;
  try {
   object = (T) session.get(clazz, (Serializable) id);
  } catch (Exception e) {
   e.printStackTrace();
  }
  return object;
 }
}

// Класс пользователя

public class UserDAO extends CommonDAO<UserMaster> { // Here UserMaster is pojo

 public UserDAO() {
  super();
 }

 public static void main(String ar[]) {
  UserMaster user = new UserDAO().listById(1); // 1 is id
  System.out.println(user.getUserName());
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...