hibernates删除数据的问题
jsp页面1
<%@ page language="java" import="java.util.*,org.hibernate.Session,
org.hibernate.Transaction,com.SessionFactory,org.hibernate.Query,
org.hibernate.cfg.Configuration,com.orm.Adminuser" pageEncoding="gb2312"%>
<%
Session s = SessionFactory.getSession();
Query q = s.createQuery("from Adminuser");
List list = q.list();
if(list.isEmpty())
out.print("error!");
else
{
for (Iterator it = list.iterator(); it.hasNext(); )
{
Adminuser ui = (Adminuser) it.next();
out.println(ui.getId());
out.println(ui.getLoginname());
out.println(ui.getTruename());
out.print("<a href=adminupdate.jsp?id="+ui.getId()+">编辑</a>");
out.print("<a href=admindel.jsp?id="+ui.getId()+">删除</a>");
out.println("<BR>");
}
}
s.close();
%>
jsp页面2为(我想从页面1传ID的值到这个页面,通过ID判断删除的具体行)
<%@ page language="java" import="java.util.*,org.hibernate.Session,
org.hibernate.Transaction,com.SessionFactory,org.hibernate.Query,
org.hibernate.cfg.Configuration,com.orm.Adminuser" pageEncoding="GBK"%>
<%request.setCharacterEncoding("GBK");%>
<%
long id=Long.parseLong(request.getParameter("id"));
Session s = SessionFactory.getSession();
org.hibernate.Transaction t = s.beginTransaction();
Adminuser u1=new Adminuser();
u1.setId(new Long(id));
s.delete(u1);
t.commit();
s.close();
%>
结果提示错误了!
如下:
HTTP Status 500 -
--------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /admindel.jsp at line 11
8: org.hibernate.Transaction t = s.beginTransaction();
9: Adminuser u1=new Adminuser();
10: u1.setId(new Long(id));
11: s.delete(u1);
12: t.commit();
13: s.close();
14:
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
org.hibernate.PropertyValueException: not-null property references a null or transient value: com.orm.Adminuser.loginname
org.hibernate.engine.Nullability.checkNullability(Nullability.java:72)
org.hibernate.event.def.DefaultDeleteEventListener.deleteEntity(DefaultDeleteEventListener.java:173)
org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:110)
org.hibernate.impl.SessionImpl.fireDelete(SessionImpl.java:761)
org.hibernate.impl.SessionImpl.delete(SessionImpl.java:739)
org.apache.jsp.admindel_jsp._jspService(admindel_jsp.java:71)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.
--------------------------------------------
Apache Tomcat/6.0.14
求各位仁兄指点,不胜感激!
[解决办法]
[解决办法]
jf
[解决办法]
不能对临时对象调用DELETE方法,
把
Adminuser u1=new Adminuser();
[解决办法]
Session s = SessionFactory.getSession();
org.hibernate.Transaction t = s.beginTransaction();
Adminuser u1=s.get(Adminuser.class,id); //注意这行
s.delete(u1);
[解决办法]
Adminuser u1= (Adminuser) session.get(Adminuser.class,new Long(id));
[解决办法]
这个问题我也遇到过,我现在加了一个群,这个群人气较好,也的确有高手,不但可以交流问题,而且还可以接项目赚钱,QQ群号是:陆.肆.柒.玖.捌.柒.玖.贰,不要说我做广告,看看便知,如需要的话加入试试,如果你发现好的交流群也别忘了告诉我啊!呵呵!
我的异常网推荐解决方案:An exception occurred processing JSP page,http://www.myexception.cn/j2se/33144.html
我的异常网推荐解决方案:The server encountered an internal error () that prevented it from fulfilling this request.,http://www.myexception.cn/java-web/317.html