在没有HQL的情况下检索表的所有行?

Mar*_*mer 59 hibernate

我正在使用Hibernate 4,并希望简单地列出表的所有行.我发现的所有解决方案建议使用"from tablename"之类的东西,但我想避免在字符串中硬编码表名.

mra*_*rab 136

您可以使用

session.createCriteria(MyEntity.class).list();
Run Code Online (Sandbox Code Playgroud)

例如.

  • session.createCriteria(MyEntity.class).addOrder(Order.asc( "时代"))名单(). (16认同)
  • 不推荐使用SharedSessionContract类型的createCriteria(Class)方法. (7认同)
  • 有没有办法让这种类型安全? (5认同)
  • 我该怎么办呢? (2认同)

JB *_*zet 7

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

String hql = "select a from " + TheEntity.class.getSimpleName() + " a";
Run Code Online (Sandbox Code Playgroud)

但我赞成可读性而不是类型安全,并且使用

String hql = "select a from TheEntity a";
Run Code Online (Sandbox Code Playgroud)

无论如何,您应该对查询进行自动化测试.