一、投影查询
package edu.aeon.hibernate.test; import java.util.List; import org.hibernate.Session; import org.hibernate.Transaction; import org.junit.Test; import edu.aeon.aeonutils.hibernate.getsessionutil.GetSessionUtil; import edu.aeon.beans.Student; /** * [说明]:投影查询:只查询名字和年龄这两个字段 * 必须要有相应的构造器 * @author aeon * */ public class TestQuery { @Test public void testQueryRecordCount() { Session session=null; Transaction transaction=null; try { session = GetSessionUtil.getSession(); transaction=session.getTransaction(); transaction.begin(); //这里的count(*)相当于count(id) String sql = "select new Student(stuName,stuAge) from Student"; List<Student> userList = session.createQuery(sql).list(); for (Student stu : userList) { System.out.println(stu); } session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); //事物的回滚操作 transaction.rollback(); } } }
数据库信息截图:
执行结果截图:
只查出来了用户名和年龄两个字段吧!其它值都是默认显示值,因为我在Student类里面重写了equals方法,所以也显示出来了
这里必须要注意、你查询那些字段、必须要有这些字段的相应构造器!比如上面就必须要有 public Student(String stuName,int stuAge){}构造器。