gpt4 book ai didi

java - 在 hibernate 中获取 ClassCastException

转载 作者:行者123 更新时间:2023-12-02 00:12:30 25 4
gpt4 key购买 nike

我正在 hibernate 中编写一些代码,在将行插入我的表(hall_block_calendar)之前,我需要更新其他一些表(hall_calendar)。我的状态为 F、E、M,从该状态开始,只有通过带有“F”的表格提交的日期才会被标记为“N”。我的 pojo 类 Hall_calendar.java 的映射文件包含 pojo 类中的 Hall_code 和 calendar_date 以及 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);

关于java - 在 hibernate 中获取 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12448889/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com