因为某些原因,今天把表的主键类型改成了String类型的了,所有导致下面的类似的方法就用不了了,所已我想问问该怎么解决啊,这是我DAO层的方法,还是不是因为String的问题? 我底层的方法:(简单的分页查询.....)
public <T extends BascEntity> List<T> getByPage(final String HQL,
final int pageNo, final int pageSize) {
try {
List<T> list = hibernateTemplate
.executeFind(new HibernateCallback() {
@Override
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
final Query query = session.createQuery(HQL);
return (query.setFirstResult(pageNo).setMaxResults(
pageSize).list());
}
});
return list;
} catch (Exception e) {
log.error("对象分页查询失败", e);
return null;
}
} 测试方法:
public static void setUpBeforeClass() throws Exception {
ApplicationContext ctx = new FileSystemXmlApplicationContext(
new String[] {
"WebRoot/WEB-INF/springconfig/applicationContext.xml",
"WebRoot/WEB-INF/springconfig/spring-dao.xml",
"WebRoot/WEB-INF/springconfig/spring-service.xml" });
dao = (EmployeeDAOImpl) ctx.getBean("employeeDAO");
} @Test
public void testGetAllEmp() {
try {
List<Employee> empList = dao.getByPage("from Employee e", 1, 3); for (Employee emp : empList) {
System.out.println(emp.getEmpName() + " "
+ emp.getDepInfo().getDepName()); }
} catch (Exception e) {
e.printStackTrace();
}
}用junit测试报错: java.lang.NullPointerException
at com.act.dao.service.test.EmployeServiceImplTest.testGetAllEmp(EmployeServiceImplTest.java:32)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)大家帮忙解决哈啊,感激不尽!!!
public <T extends BascEntity> List<T> getByPage(final String HQL,
final int pageNo, final int pageSize) {
try {
List<T> list = hibernateTemplate
.executeFind(new HibernateCallback() {
@Override
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
final Query query = session.createQuery(HQL);
return (query.setFirstResult(pageNo).setMaxResults(
pageSize).list());
}
});
return list;
} catch (Exception e) {
log.error("对象分页查询失败", e);
return null;
}
} 测试方法:
public static void setUpBeforeClass() throws Exception {
ApplicationContext ctx = new FileSystemXmlApplicationContext(
new String[] {
"WebRoot/WEB-INF/springconfig/applicationContext.xml",
"WebRoot/WEB-INF/springconfig/spring-dao.xml",
"WebRoot/WEB-INF/springconfig/spring-service.xml" });
dao = (EmployeeDAOImpl) ctx.getBean("employeeDAO");
} @Test
public void testGetAllEmp() {
try {
List<Employee> empList = dao.getByPage("from Employee e", 1, 3); for (Employee emp : empList) {
System.out.println(emp.getEmpName() + " "
+ emp.getDepInfo().getDepName()); }
} catch (Exception e) {
e.printStackTrace();
}
}用junit测试报错: java.lang.NullPointerException
at com.act.dao.service.test.EmployeServiceImplTest.testGetAllEmp(EmployeServiceImplTest.java:32)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)
at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)大家帮忙解决哈啊,感激不尽!!!
dao = (EmployeeDAOImpl) ctx.getBean("employeeDAO");
这里的dao没定义吗?
dao = (EmployeeDAO) ctx.getBean("employeeDAO"); 试下
看看2楼问的
public <T extends BascEntity> List<T> getByPage(final String HQL,
final int pageNo, final int pageSize) {
try {
List<T> list = hibernateTemplate
.executeFind(new HibernateCallback() {
@Override
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
final Query query = session.createQuery(HQL);
return (query.setFirstResult(pageNo).setMaxResults(
pageSize).list());
}
});
return list;
} catch (Exception e) {
log.error("对象分页查询失败", e);
return null;
}
}service层调用的方法:
public List<EmployeeVO> getAllEmp(int pageNo, int pageSize) {
List<Employee> empList = employeeDAO.getByPage("from Employee", pageNo,
pageSize);
List<EmployeeVO> empVOList = new ArrayList<EmployeeVO>();
for (Employee emp : empList) {
EmployeeVO empVO = new EmployeeVO();
empVO.setEmpId(emp.getEmpId());
empVO.setEmpName(emp.getEmpName());
empVO.setEmpLoc(emp.getEmpLoc());
empVO.setDepCode(emp.getDepInfo().getDepCode());
empVO.setDepName(emp.getDepInfo().getDepName());
empVO.setAcctiveFlag(emp.getActiveFlag());
empVOList.add(empVO);
}
return empVOList;
}
类映射文件:
<hibernate-mapping>
<class name="com.act.dao.pojo.Employee" table="employee">
<id name="empId" type="java.lang.String">
<column name="emp_id" length="10" />
<generator class="assigned" />
</id>
<many-to-one name="depInfo" class="com.act.dao.pojo.DepInfo" fetch="select" lazy="false">
<column name="dep_code" length="10" />
</many-to-one>
<property name="empName" type="java.lang.String">
<column name="emp_name" length="20" />
</property>
<property name="empLoc" type="java.lang.String">
<column name="emp_loc" length="50" />
</property>
<property name="activeFlag" type="java.lang.Byte">
<column name="active_flag" not-null="true" />
</property>
</class>
</hibernate-mapping>
这样的配置没有错啊 ,难道hibernate底层的方法不支持主键查询是String的?
public <T extends BascEntity> List <T> getByPage(final String HQL,
final int pageNo, final int pageSize) {
try {
List <T> list = hibernateTemplate
.executeFind(new HibernateCallback() {
@Override
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
final Query query = session.createQuery(HQL);
System.out.println("分页查询的记录:" + query.list());
return (query.setFirstResult(pageNo).setMaxResults(
pageSize).list());
}
});
return list;
} catch (Exception e) {
log.error("对象分页查询失败", e);
return null;
}
} System.out.println("分页查询的记录:" + query.list());
打印出来是有值的 这是为什么啊,之前都可以,难道是数据库的问题,我现在用的是sqlserver,sqlserver不支持这种分页?