我有一个名为“Store”的类,它映射到名为“STORE”
的DB表我想从此表中选择一个列(列名=“ID”)并将其作为Long列表返回。
我尝试了这个,但它不起作用:
标准cr = dbs.createCriteria(Store.class) .setProjection(Projections.projectionList()。add(Projections.property(“id”),“id”)) .setResultTransformer(Transformers.aliasToBean(Long.class)); return cr.list();
我想我知道它为什么不起作用,这是因为“Long”是不可变的并且没有setter。
谢谢!
答案 0 :(得分:0)
首先,Criteria api对动态生成的查询非常有用,但过于复杂,导致静态查询的可读性和可维护性较低。您应该使用HQL进行这样一个简单的静态查询:
String hql = "select store.id from Store store";
// now execute the query
如果您坚持使用Criteria,则应该组成相同的查询:
Criteria c = session.createCriteria(Store.class, "store");
c.setProjection(Projections.property("store.id"));
// now execute the query