Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试从数据库中删除HTTP状态500时-请求处理失败_Java_Hibernate_Spring Mvc - Fatal编程技术网

Java 尝试从数据库中删除HTTP状态500时-请求处理失败

Java 尝试从数据库中删除HTTP状态500时-请求处理失败,java,hibernate,spring-mvc,Java,Hibernate,Spring Mvc,AdminController.java @Controller public class AdminController { @Autowired HttpServletRequest request; @Autowired AdminDao adminDao; @RequestMapping("/deletebatch") public String deletebatch(){

AdminController.java

    @Controller
    public class AdminController {

     @Autowired
        HttpServletRequest request;

        @Autowired
        AdminDao adminDao;

    @RequestMapping("/deletebatch")
        public String deletebatch(){
            int batchid = Integer.parseInt(request.getParameter("id"));
            adminDao.deletebatch(batchid);
            return "redirect:/viewbatch";
        }
#AdminDaoImpl.java

@Repository("adminDao")
public class AdminDaoImpl implements AdminDao {

    @Autowired
    SessionFactory sessionFactory;
@Transactional
     public void deletebatch(int batchid){
//         Batch batch = (Batch) sessionFactory.getCurrentSession().load(Batch.class,batchid);
//         if(batch!=null){
             sessionFactory.getCurrentSession().delete(batchid);
         //}

     }
}
#viewbatch.jsp

        <form >
            <table border="1">
                <tr>
                    <th>BATCH id</th>
                    <th>BATCH name</th>
                    <th>edit/delete</th>
                </tr>

                    <c:forEach items="${batchlist}" var="batchlist">
                        <tr>   
                        <td>${batchlist.batchid}</td>
                        <td>${batchlist.batchname}</td>
                        <td><a href="edit">edit</a>/<a href="${pageContext.servletContext.contextPath}/deletebatch?id=${batchlist.batchid}">delete</a></td>
                        </tr>


                    </c:forEach>

批次id
批次名称
编辑/删除
${batchlist.batchid}
${batchlist.batchname}
/
当我尝试删除时,出现错误:

HTTP状态500-请求处理失败;嵌套异常是 org.hibernate.MappingException:未知实体:java.lang.Integer“

及 我还尝试将admincontroller设置为“
/delete?id=${batchid}
”。 执行此操作时,我遇到了一个问题,例如无法转换为字符串。删除(对象);将要删除的实体作为参数,即示例中的批处理对象

getCurrentSession().delete(batchid);
中,您正在传递一个整数-Hibernate尝试从数据库中删除实体
Integer
,但找不到映射,因此引发MappingException

您在
AdminDaoImpl.java
中注释掉的代码实际上就是您获得实体所需要的

有一些关于如何在Hibernate中删除实体的示例。还有一些关于是否应该使用
Session.get(Batch.class,batchid)
而不是
Session.load()
Session.delete(Object);
将要删除的实体作为参数,即示例中的
Batch
对象

getCurrentSession().delete(batchid);
中,您正在传递一个整数-Hibernate尝试从数据库中删除实体
Integer
,但找不到映射,因此引发MappingException

您在
AdminDaoImpl.java
中注释掉的代码实际上就是您获得实体所需要的


有关于如何在Hibernate中删除实体的示例。还有一些提示,说明您是否应该使用
Session.get(Batch.class,batchid)
而不是
Session.load()

根据您的建议,我将Batch Batch=(Batch)Session.get(Batch.class,batchid);我发现了问题404错误您最初的问题是在ORM层(Hibernate)-HTTP错误在这里没有多大帮助,因为它们在上面有很多层。您的HTTP 500错误包含实际有帮助的原始java/Hibernate异常。HTTP 404是一个“未找到的页面”“当然还有另一个问题……我知道404是一个页面未找到的错误,但当我改为该错误时,我发现了这个问题,但当我删除它时,它会像往常一样正常工作。我很确定404与Hibernate没有任何关系;我假设您的代码中存在多个问题。也许你应该试着让不同的层独立工作。如果删除
adminDao.deletebatch(batchid),AdminController是否工作-call(请参阅我最后的评论,这可能是404的原因)。当直接从某些测试代码(不在web应用程序中)调用时,
AdminDaoImpldeletebatch(int batchid)
是否有效?是的,我找到了这个问题的解决方案,这是由于sessionFactory.GetCurrentSeision().delete(新批(batchid))根据你的建议,我将Batch=(Batch)session.get(Batch.class,batchid);我遇到了问题404 error您最初的问题是在ORM层(Hibernate)-HTTP错误在这里没有多大帮助,因为它们在上面有很多层。HTTP 500错误包含实际有用的原始java/Hibernate异常。HTTP 404是一个“找不到页面”的问题,而且肯定是另一个问题……我知道404是一个找不到页面的错误,但当我改为该错误时,我发现了这个问题,但当我删除它时,它会像往常一样正常工作。我很确定404与Hibernate没有任何关系;我假设您的代码中存在多个问题。也许你应该试着让不同的层独立工作。如果删除
adminDao.deletebatch(batchid),AdminController是否工作-call(请参阅我最后的评论,这可能是404的原因)。当直接从某些测试代码(不在web应用程序中)调用时,
AdminDaoImpldeletebatch(int batchid)
是否有效?是的,我得到了这个问题的解决方案,这是由于sessionFactory.GetCurrentSeision().delete(新批处理(batchid))和delete Function将接受该对象。