我有多个类的通用HQL
Query query = session.createQuery("select id, name from " + hibernateClass.getClass().getName());
query.list();
返回List<Object[]>
。现在查询的输出具有相同的结构,即Long id
和String name
。所以可以将这个内容放在一个类中,这样当我调用query.list()
时,所有东西都会被复制到一个列表中,我不必创建一个新的List
对象并填充它。
答案 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),但这取决于你的口味。