Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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 在hibernate中获得ClassCastException_Java_Hibernate - Fatal编程技术网

Java 在hibernate中获得ClassCastException

Java 在hibernate中获得ClassCastException,java,hibernate,Java,Hibernate,我正在hibernate中编写一些代码,在将行插入到我的表(hall_block_calendar)之前,我需要更新其他一些表(hall_calendar)。 我的状态为F、E、M,从该状态开始,只有表格中带有“F”的日期才会标记为“N”。我的pojo类Hall_calendar.java映射文件包含pojo类中Hall_代码、calendar_日期和hallbookingcompid的复合键 我的问题很有效。但是,for循环引发异常。如果您对此有任何意见,我将不胜感激 publ

我正在hibernate中编写一些代码,在将行插入到我的表(hall_block_calendar)之前,我需要更新其他一些表(hall_calendar)。 我的状态为F、E、M,从该状态开始,只有表格中带有“F”的日期才会标记为“N”。我的pojo类Hall_calendar.java映射文件包含pojo类中Hall_代码、calendar_日期和hallbookingcompid的复合键

我的问题很有效。但是,for循环引发异常。如果您对此有任何意见,我将不胜感激

        public boolean addHallCalendarBlock(Hall_block_calendar hbc, Hall_calendar hc)
{
   //boolean result;
   Session session=HibernateUtil.getSessionFactory().openSession();   
   Transaction tx=null;
   try
    {
       tx=session.beginTransaction();

       Query q=session.createQuery("from Hall_calendar h where h.hallbookingcompid.calendar_date between'"+hbc.getHall_block_from_date()+"' and '"+hbc.getHall_block_to_date()+"' and hall_availability='F'");

       System.out.println("query working: "+q.list());

       if(!q.list().isEmpty())
       {   
           Hall_calendar upd_obj = new Hall_calendar();
           for(Iterator it=q.iterate();it.hasNext();)
           {   


             Object[] row = (Object[]) it.next();
             System.out.println("row[0]: "+(String)row[0]);
             upd_obj= (Hall_calendar) session.load(Hall_calendar.class, (String)row[0]);

             upd_obj.setHall_availability("N"); 
             session.save(upd_obj); 
           }

           session.save(hbc);
           tx.commit();  
       }   
    }
   catch(Exception e)
   {
       tx.rollback();
       e.printStackTrace();
       return false;
   }
   finally
   {
       session.close();
   }
   return true;
}


query working: [com.cmc.sibs.vo.Hall_calendar@7e9bed, com.cmc.sibs.vo.Hall_calendar@4d2125, com.cmc.sibs.vo.Hall_calendar@1bb41d7, com.cmc.sibs.vo.Hall_calendar@df9252]
java.lang.ClassCastException: com.cmc.sibs.vo.Hall_calendar
    at com.cmc.sibs.dao.SibsDao.addHallCalendarBlock(SibsDao.java:21861)
    at com.cmc.sibs.delegates.SibsDelegate.addHallCalendarBlock(SibsDelegate.java:2982)
    at com.cmc.sibs.servlets.AddHallBlocking.doPost(AddHallBlocking.java:86)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Unknown Source)
boolean in servlet: false

首先,您违反了所有Java代码标准。基本上,你用java编写C++代码。第二,我不明白为什么要这样迭代。在没有select子句的查询上执行query.list()时,将返回完整的对象。为什么不:

final List<Hall_calendar> res = (List<Hall_calendar>) q.list();
for (final Hall_calendar hall_calendar : res) {
    hall_calendar.setHall_availability("N");
    //no need to explicitly save these..
}
session.save(hbc);
final List res=(List)q.List();
用于(最终大厅日历大厅日历:res){
大厅日历。设置大厅可用性(“N”);
//无需显式保存这些。。
}
会话保存(hbc);

首先,您违反了所有Java代码标准。基本上,你用java编写C++代码。第二,我不明白为什么要这样迭代。在没有select子句的查询上执行query.list()时,将返回完整的对象。为什么不:

final List<Hall_calendar> res = (List<Hall_calendar>) q.list();
for (final Hall_calendar hall_calendar : res) {
    hall_calendar.setHall_availability("N");
    //no need to explicitly save these..
}
session.save(hbc);
final List res=(List)q.List();
用于(最终大厅日历大厅日历:res){
大厅日历。设置大厅可用性(“N”);
//无需显式保存这些。。
}
会话保存(hbc);
您使用“查询”接口,它没有迭代器()方法。使用list()方法将一个列表存储查询结果放到该列表中,您可以按照以下方式创建for循环

for(class_name object : list_name)
{
//Performed action using object
}
您使用“Query”接口,但它没有迭代器()方法。使用list()方法将一个列表存储查询结果放到该列表中,您可以按照以下方式创建for循环

for(class_name object : list_name)
{
//Performed action using object
}

你真的有21000多行的Dao类吗?我希望这不是生产代码。(强制地划分每个DAO操作中的事务,使用e.printStackTrace“记录”,返回一个布尔值以指示错误条件,而不是抛出异常,…)您真的有21000多行DAO类吗?我希望这不是生产代码。(强制划分每个DAO操作中的事务,使用e.printStackTrace“记录”,返回布尔值以指示错误条件,而不是引发异常,…)