SSH整合,DAO层save失灵
SSH整合,DAO层save失效
我刚整合SSH 想试试一个小例子 结果调了半天还是出错。希望大家帮我看看~
login.JSP 表单post到 StudentAction
这里说明一下,System.out.println是为了测试数据有没有传过来 结果证明传过来了
StudentService:
StudentDAO里面我加了一句 我怀疑是save方法有问题 我在save方法后面print一下
实体类:
屏幕回显:

我这个是SSH整合 不是单纯的hibernate
请大家帮忙看看 感激不尽
------解决方案--------------------
看看你的事务配置~切面一般来说都定义到service层!
配置好save,delete,update,跟select,find的事务!
然而你调用的getStudentDao方法,Spring应该是不会给你自动提交的!
---------------------
PS:如果你是用Spring管理事务的话!
------解决方案--------------------
看问题估计是事务的问题吧 你看看你spring里是不是进行了事务自动管理的相关配置。可以先听二楼的建议,先弄个事务测试一下 定位一下问题是不是事务引起的
我刚整合SSH 想试试一个小例子 结果调了半天还是出错。希望大家帮我看看~
login.JSP 表单post到 StudentAction
<form action="StudentAction.action" method="post">
姓名:<input type="text" name="name"/><br>
年龄:<input type="text" name="age"/><br>
成绩:<input type="text" name="score"/><br>
<input type="submit" value="提交">
</form>
package action;
import java.util.List;
import model.Student;
import service.StudentService;
public class StudentAction
{
private StudentService studentService;
private String name;
private Integer age;
private Integer score;
private List studentList;
/*set get method 省略*/
public String execute() throws Exception
{
Student student =new Student();
student.setName(name);
student.setScore(score);
student.setAge(age);
if(name==null)
{System.out.println("NAME NULL!");}
else
{System.out.println(""+student.getName()+student.getAge()+student.getScore());}
studentService.getStudentDao().save(student);
//studentList=studentService.getStudentDao().findAll();
System.out.println("Action!");
//System.out.println(studentList.size());
return "success";
}
}
这里说明一下,System.out.println是为了测试数据有没有传过来 结果证明传过来了
StudentService:
package service;
import dao.StudentDAO;
public class StudentService
{
private StudentDAO studentDao;
public void save(){
}
public StudentDAO getStudentDao() {
return studentDao;
}
public void setStudentDao(StudentDAO studentDao)
{
this.studentDao = studentDao;
}
}
StudentDAO里面我加了一句 我怀疑是save方法有问题 我在save方法后面print一下
package dao;
import java.util.List;
import model.Student;
import org.hibernate.LockMode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class StudentDAO extends HibernateDaoSupport {
private static final Logger log = LoggerFactory.getLogger(StudentDAO.class);
//property constants
public static final String NAME = "name";
public static final String AGE = "age";
public static final String SCORE = "score";
protected void initDao() {
//do nothing
}
public void save(Student transientInstance) {
log.debug("saving Student instance");
try {
getHibernateTemplate().save(transientInstance);
log.debug("save successful");
System.out.println("save!"); //测试save执行到这里没,结果是执行到了,有回显
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
实体类:
private Integer id; //主键 id generator increment
private String name;
private Integer age;
private Integer score;
屏幕回显:
我这个是SSH整合 不是单纯的hibernate
请大家帮忙看看 感激不尽
------解决方案--------------------
看看你的事务配置~切面一般来说都定义到service层!
配置好save,delete,update,跟select,find的事务!
然而你调用的getStudentDao方法,Spring应该是不会给你自动提交的!
---------------------
PS:如果你是用Spring管理事务的话!
------解决方案--------------------
看问题估计是事务的问题吧 你看看你spring里是不是进行了事务自动管理的相关配置。可以先听二楼的建议,先弄个事务测试一下 定位一下问题是不是事务引起的