我有一个类似下面的方法
public List<String> getSimilarResourceNames(String resourceName){
String searchString = "%"+resourceName+"%";
Session session = getSession();
Criteria criteria = session.createCriteria(Resource.class);
criteria.add(Restrictions.like("name", searchString));
return criteria.list()
}
这将从数据库返回整个资源,但我需要的只是资源的名称。我怎么能做到这一点?
答案 0 :(得分:3)
使用Projection
,您可以在Hibernate documentation中找到示例。
Criteria criteria = session.createCriteria(Resource.class);
criteria.setProjection(Property.forName("name"))
criteria.add(Restrictions.like("name", searchString));
答案 1 :(得分:2)
使用Projection
,您将Pojo
设置为默认值,从而获得其他字段(您未通过Projection获得)。在HQL
中,您可以获得指定的列值,如下所示:
Query query = session.createQuery("select u.fullname from Users u");
List<Object[]> rows = query.list();
List<String> fullnames = new ArrayList<String>();
for (Object[] row: rows) {
fullnames.add(row[0]);
}
我希望这会对你有所帮助。