检索没有HQL的表的所有行?

我正在使用Hibernate 4,并希望简单列出表的所有行。 我find的所有解决schemebuild议使用类似“从表名”,但我想避免在string中硬编码表名。

您可以使用

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

例如。

HQL不使用表名。 它使用实体名称。 实体名称是(默认)类名称。 所以你可以使用

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

但是,在这里,我会倾向于对types安全的可读性,并使用它

 String hql = "select a from TheEntity a"; 

无论如何,你应该为你的查询进行自动化testing。

// Hibernate类

 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()); } }