【问题标题】:Why is this code throwing a ClassCastException in netbeans while its runing fine in eclipse为什么这段代码在 netbeans 中抛出 ClassCastException 而它在 eclipse 中运行良好
【发布时间】:2012-09-21 07:16:44
【问题描述】:

//运行时异常 在 netbeans 中调用以下代码时发生运行时异常。在日食中工作正常。

    public List<Ticket> findOpenTickets() {
            Session session = null;

            try {
                session = getSession();
                Criteria criteria = session.createCriteria(getReferenceClass());
                            criteria.add(Restrictions.eq(Ticket.PROP_CLOSED, Boolean.FALSE));
                List list = criteria.list();
                return list;
            } finally {
                closeSession(session);
            }
        }

异常堆栈跟踪是

java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.Short
at org.apache.derby.client.net.NetStatementRequest.buildFDODTA(Unknown Source)
at org.apache.derby.client.net.NetStatementRequest.buildSQLDTAcommandData(Unknown Source)
at org.apache.derby.client.net.NetStatementRequest.writeOpenQuery(Unknown Source)
at org.apache.derby.client.net.NetPreparedStatement.writeOpenQuery_(Unknown Source)
at org.apache.derby.client.am.PreparedStatement.writeOpenQuery(Unknown Source)
at org.apache.derby.client.am.PreparedStatement.flowExecute(Unknown Source)
at org.apache.derby.client.am.PreparedStatement.executeQueryX(Unknown Source)
at org.apache.derby.client.am.PreparedStatement.executeQuery(Unknown Source)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)
at org.hibernate.loader.Loader.doQuery(Loader.java:674)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2213)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:94)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
at com.model.dao.TicketDAO.findOpenTickets(TicketDAO.java:154)
at com.util.TicketActiveDateSetterTask.run(TicketActiveDateSetterTask.java:29)
at com.main.Application.initDatabase(Application.java:160)
at com.main.Application.start(Application.java:91)
at com.main.Main.main(Main.java:12)

我无法解决此异常。因为一切似乎都很好,所以相同的代码在 eclipse 中运行良好,但会产生运行时异常。

【问题讨论】:

  • 请检查您的项目设置(如编译器设置)和构建路径中的 Jar 参考...检查您在 Netbean 和 Eclipse 项目中是否使用相同版本的 JAR...
  • 看起来像依赖jar问题请检查所有依赖jar是否配置正确。
  • 所有依赖项都已正确配置。在依赖项中,我可以看到依赖的 jar。我被卡住了。
  • 在 Eclipse 和 Netbeans 中测试时是否使用相同的数据库并选择相同的数据?
  • 是的,我正在使用与 eclipse 和 netbeans 相同的数据库。

标签: java hibernate netbeans classcastexception runtimeexception


【解决方案1】:

检查您的 hibernate.dialect 是否正确?它必须是你的数据库..

【讨论】:

  • 设置正确。代码在 Eclipse 中运行良好,但问题出在 netbeans 中。
  • 在 Derby DB 中,SETTLED 列的类型为 SMALLINT 在 Ticket.hbm.xml 在 Ticket.java 中 codepublic static String PROP_CLOSED = "close";code 导致异常的代码是 codecriteria.add(Restrictions.eq(Ticket.PROP_CLOSED, false));列表列表 = 标准列表(); return list;code 我有相同的代码在 Eclipse 中运行良好。我应该在 netbeans 中做什么才能以尽可能低的变化达到预期的结果。我被困在这超过 10 小时。
  • 从 smallint 更改为 boolean 并尝试.. :)
猜你喜欢
  • 1970-01-01
  • 2020-06-04
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多