ORM的好处是我可以将数据库表映射到Java对象。如果我使用HQL编写自定义语句,那么重点是什么?我不妨编写普通的SQL查询并使用结果集?
好吧,基本上是因为有时不可能(或很难)使用其他替代方案编写查询。然后,您需要退回到HQL替代方案。
hql认为您用它编写字符串的事实。因此,强烈推荐其他策略。但是,有时候,这是实施它的最快方法。
我也会说要您阅读这篇文章,该帖子已经对HQL进行了广泛讨论:JPA和Hibernate-标准与JPQL或HQL
hql是唯一的替代方案,可以拿出冬眠中留下的一点表演。
如果您有一个大桌间,而您所需要的只是ID和一个描述,那么您对HQL会更好。您可以填写两个列信息,如果您使用的是Hibernate 4,也有某种类型的Safty。
查询:
final TypedQuery<Pojo> query = em.createQuery(new StringBuilder()
.append("SELECT new ").append(Pojo.class.getName())
.append("(tbl.id, tbl.desc) FROM ")
.append(BigTable.class.getName()).append(" tbl ")
.append("WHERE tbl.id between :start and :end ")
.toString(),
Pojo.class
);
List<Pojo> list = query.getResultList();