如何在公共类中获取HQL输出

时间:2012-04-27 14:00:26

标签: java hibernate list hql

我有多个类的通用HQL

Query query = session.createQuery("select id, name from " + hibernateClass.getClass().getName());

query.list();返回List<Object[]>。现在查询的输出具有相同的结构,即Long idString name。所以可以将这个内容放在一个类中,这样当我调用query.list()时,所有东西都会被复制到一个列表中,我不必创建一个新的List对象并填充它。

1 个答案:

答案 0 :(得分:2)

有一些可能导致类似的结果(假设你想要一个List<NewClass>作为结果,NewClass只有属性id和name):

1)你做createQuery("select new NewClass(id, name) from " + hibernateClass.getClass())

2)为同一个数据库表创建NewClass的新映射文件,但只有属性id和name,然后查询为createQuery("from " + NewClass.class)

3)您只需执行createQuery("from " + hibernateClass.getClass()),并且不会考虑加载的多余值。与仅加载必要列相比,加载所有列的额外时间是微不足道的。如果您愿意,您仍然可以创建一个类或接口NewClass和HibernateClass extends/implements NewClass

我个人更喜欢3),但这取决于你的口味。