看下面的代码:
public Page doSave(WebForm form) {
Department object = form.toPo(Department.class);
if (!hasErrors())
service.addDepartment(object);
System.out.println(object.getId());
form.jsonResult(object.getId());
return Page.JSONPage;
}
实体Department的主键id值为自动生成,调用业务层的addDepartment方法来添加一个部门,如果addDepartment方法不是在一个新事务中运行,则会加入当前事务,此时在方法执行完后是不会提交事务的。不过我们 System.out.println(object.getId());理论上仍然可以得到这个新加入的实体的id,然而有的时候如果你的mysql运行模式不对,则就会输出null了,这是一个很麻烦的问题,往往系统中的很多程序都会出现异常。
其实这是MYSQL的运行模式所致,按下面的两幅图重新修改一下就可以让事务正常工作了。

