我在管理员增加时,可以把记录插入到数据库,但是页面上报了一个异常:
.filter.EncodingFilter.doFilter(EncodingFilter.java:29)
root cause java.sql.SQLException: Duplicate entry 'admin56' for key 2
com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2847)
com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1531)
com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1347)
com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:958)
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1957)
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1880)
com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1741)
org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102)
org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:73)
org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:33)
org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2154)
org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2634)
org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:48)
org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:298)
org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:181)
org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:107)
org.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:186)
org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:123)
org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:53)
org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:677)
org.hibernate.impl.SessionImpl.merge(SessionImpl.java:661)
org.hibernate.impl.SessionImpl.merge(SessionImpl.java:665)
org.springframework.orm.hibernate3.HibernateTemplate$23.doInHibernate(HibernateTemplate.java:766)
org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
org.springframework.orm.hibernate3.HibernateTemplate.merge(HibernateTemplate.java:763)
com.tianlw.oss.admin.dao.AdminsDAOImpl.save(AdminsDAOImpl.java:46)
com.tianlw.oss.admin.service.AdminsServiceImpl.add(AdminsServiceImpl.java:37)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304)
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:139)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
$Proxy27.add(Unknown Source)
com.tianlw.oss.web.actions.AdminAction.addnewAdmin(AdminAction.java:219)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194)
org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.tianlw.oss.web.filter.EncodingFilter.doFilter(EncodingFilter.java:29)
我的action中的方法:
/**
 * 管理员增加后,仍然跳转到管理员增加页面
 */
public ActionForward addnewAdmin(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String error = "";
AdminForm adminForm = (AdminForm)form;
Admins admin1 = adminsService.finfByName(adminForm.getName());
if(admin1 == null){
error = "";
request.getSession().setAttribute("adminForm", adminForm);
Admins admin = new Admins();
admin.setName(adminForm.getName());
admin.setLoginname(adminForm.getLoginname());
admin.setLoginpassword(adminForm.getLoginpassword());
admin.setEmail(adminForm.getEmail());
admin.setPhone(adminForm.getPhone());

Set<Roles> roles = new HashSet<Roles>();
String[] roleid = adminForm.getRoleid();
for(int i=0;i<roleid.length;i++){
Roles role = rolesService.findById(Integer.parseInt(roleid[i]));
roles.add(role);
}
admin.setRoles(roles);
System.out.println("==============");
adminsService.add(admin);

request.getSession().setAttribute("error", error);
}else{
error = "该名称已经存在!";
request.getSession().setAttribute("error", error);
}
request.getSession().removeAttribute("adminForm");
List<Roles> roles = rolesService.findAll();
request.getSession().setAttribute("roles", roles);
return mapping.findForward("addnewadmin");
}