Hibernate 问题 java.lang.Boolean 无法使用 JDK 1.7 转换为 java.lang.String

2024-03-01

我面临着 Hibernate 的问题。

使用 Hibernate 3.2.6 和 JDK 1.7.0_21

这个问题是由于 JDK 与 Hibernate 版本的兼容性造成的吗?

这个问题是随机的。我仍然无法找到重现的步骤。

2014-07-14 06:09:10,661 [DEBUG] EventExpenseAreaService.getEventSummary:654 - Revenue Value (Hari) --> 1166.15
2014-07-14 06:09:18,665 [ERROR] EventSetupService.getEventById:1451 - java.lang.Boolean cannot be cast to java.lang.String
java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
    at org.hibernate.type.StringType.toString(StringType.java:44)
    at org.hibernate.type.NullableType.nullSafeToString(NullableType.java:93)
    at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:140)
    at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:107)
    at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2002)
    at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2376)
    at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2312)
    at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2612)
    at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:96)
    at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:168)
    at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
    at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
    at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
    at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
    at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
    at com.sibisoft.northstar.events.service.EventSetupService.getEventById(EventSetupService.java:1441)
    at com.sibisoft.northstar.events.struts.EventAction.load(EventAction.java:1037)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

代码 getEventById

public EventDTO getEventById(Integer eventId,boolean logActivity, Session session)throws Exception {

    EventDTO event = null;
    Transaction transaction = null;
    try {

        if (session == null) {
            session = HibernateSessionFactory.getSession();
            if(logActivity){
                transaction = session.beginTransaction();
            }
        }

        event = (EventDTO) super.getByPrimaryKey(EventDTO.class, eventId,session);


        if(transaction!=null){
            transaction.commit();
        }

    } catch (HibernateException e) {
        LOGGER.error(e.getMessage(), e);
        if(transaction!=null){
            transaction.rollback();
        }
        throw e;
    }catch (Exception e) {
        LOGGER.error(e.getMessage(), e);
        if(transaction!=null){
            transaction.rollback();
        }
        throw e;
    }

    return event;

}

方法:通过主键获取

protected BaseEventDTO getByPrimaryKey(Class clazz, Integer pk,Session session) throws Exception{

    BaseEventDTO dto = null;
    Transaction tx = null;

    try {

        if (session == null)  {
            session = HibernateSessionFactory.getSession();
        }
        dto = (BaseEventDTO) session.get(clazz, pk);
        return dto;

    }
    catch(Exception e){
        LOGGER.error(e);
        if (tx !=null) {
            tx.rollback();
        }
        throw e;
    }
}

JDK 7 已更改Class.getDeclaredMethods()所以订单无法保证。[点击这里] http://bugs.java.com/bugdatabase/view_bug.do?bug_id=7023180

您可能在对象映射中有一个具有 getter 方法的属性String getProperty()Boolean isPropery()这会间歇性地引起问题。

休眠3BasicPropertyAccessor.getterMethod(...)有时间发现getProperty()和一些时间isProperty()由于 JDK 7 中未指定排序getDeclaredMethods()。这使 hibernate 感到困惑,它为 String 类型属性调用 Boolean 类型方法。

您需要重命名一种方法才能获得预期结果。

Hibernate 论坛上的类似问题:https://forum.hibernate.org/viewtopic.php?p=2474641 https://forum.hibernate.org/viewtopic.php?p=2474641

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate 问题 java.lang.Boolean 无法使用 JDK 1.7 转换为 java.lang.String 的相关文章

随机推荐

  • 使用缓存文件还是一个以上的 HTTP 请求?

    在所有 加速你的网站 网站和书籍上 他们总是告诉我们不惜一切代价尽量减少 HTTP 请求 这很好 但如果这意味着在每个页面上你都必须一次又一次地重新加载 120kb 因为用户缓存是空的怎么办 如果我在网站的每个页面上使用 5 个 js 文件
  • Chrome 调试器 - 如何关闭 console.log 消息分组?

    比如说 在我的 Google Chrome 扩展中我这样做 console log msg Chrome 调试器将类似的消息分组如下 有没有什么办法可以将其关闭并让消息按原样发布 它只会折叠相同的连续行 我不认为这有什么问题 但是通过控制台
  • Powershell 5 中的哪些变化改变了块大括号的含义

    我们最近将构建服务器上的 Powershell 版本从 4 0 更新到了 5 0 这一更改导致我们的一个构建脚本开始以意外的方式失败 该代码用于确定我们的产品中应包含哪些用户指南 该代码处理一个 xml 节点列表 这些节点描述了所有可用文档
  • Java 中包私有类的改进

    根据我的经验 Java 中类的包私有可见性被证明是多余的 包私有可见性似乎基于这样一个前提 几乎被另一个类私有使用的类很可能保存在同一个包中 通常情况并非如此 有人正在探索改进的访问修饰符 替代机制吗 尝试使用包私有可见性时出现问题 我们很
  • 在 apache 模块中转换 PHP 类

    我在 php5 中编写了一个复杂的系统 许多类使用静态方法并包含其他文件 现在我想分发 ant 我会选择模块方式 所以我喜欢创建一个像 myFramework so 这样的模块并将其包含在 Apache 中 也许 之后 当我编写一些 php
  • Angular AOT 和 Rollup - 未捕获的 ReferenceError:未定义导出

    我正在尝试实现 Angular 的 AOT 教程 https angular io docs ts latest cookbook aot compiler html https angular io docs ts latest cook
  • 比较匹配器在混合数字类型上失败

    在普通 Scala 中 以下断言通过 assert 1D gt 0F assert 1F gt 0 assert 1L gt 0 assert 1 gt 0 toShort assert 1 toShort gt 0 toChar 然而 S
  • XSLT 连接字符串,删除最后一个逗号

    我需要使用 XSLT 构建一个字符串 并用逗号分隔每个字符串 但在最后一个字符串后面不包含逗号 在下面的示例中 如果我有 分发 节点而不是 注释 节点 那么我将有一个尾随逗号 我不知道如何构建一个字符串作为变量 然后截断 XSLT 中的最后
  • 让php将句子分解为单词

    我可能误解了文档 但是当我编码时 explode here s a sentence 2 我最终 Array 0 gt here s 1 gt a sentence with a few words in it 有没有办法让爆炸回来 Arr
  • 为什么这段 PHP 代码只回显“Array”?

    这是我的代码 if isset POST check AND POST check First errormessage array if empty POST full name strlen POST full name lt 4 er
  • Windows服务“自托管”WCF:压缩?

    在 IIS 中使用 WCF 压缩我可以找到文档 但它面向使用 IIS 功能 我可以找到人们谈论他们如何编写自己的压缩处理程序 但这一切看起来都很定制 是否有压缩 WCF 的最佳实践 我们正在使用 http 绑定 编辑 将其设置为维基 没有任
  • Dart 中的字符串文字类型类似物

    我知道在 Dart 中没有字符串文字类型 例如 interface IButtonProps readonly variant primary secondary readonly size small regular big a litt
  • 以编程方式添加来自 Laravel 包的 CSRF 检查的异常

    问题简而言之 我正在寻找一种方法来删除VerifyCsrfToken来自包内的全局中间件管道without用户必须修改App Http Middleware VerifyCsrfToken 这可能吗 用例 我正在开发一个包 可以轻松地将推送
  • 查询 DynamoDB

    我有一个 DynamoDB 表 其中一个字母数字字符串作为哈希键 例如 d4ed6962 3ec2 4312 a480 96ecbb48c9da 我需要根据表中的另一个字段查询表 因此我需要查询来选择所有键 例如我的字段 x 位于 dat
  • 发生托管异常时“无可用源” - WPF Visual Studio 2010

    由于某种原因 我的 Visual Studio 2010 没有在我自己的代码上加载调试符号 我正在使用默认的 WPF 应用程序解决方案 使用我正在开发的示例 WPF 应用程序 并在调试模式下运行 当我进入调试状态时 我可以单步执行我的代码
  • Spark zipWithIndex 并行实现安全吗?

    如果我有一个文件 并且每行做了一个 RDD zipWithIndex row1 id1001 name address 0 row2 id1001 name address 1 row100000 id1001 name address 1
  • 无法从袜子确定袜子版本

    使用代理连接 HTTP 代理 10 3 100 207 端口 8080 使用python请求模块get函数 出现以下错误 无法从socks 10 3 100 207 8080 确定SOCKS版本 Try export all proxy s
  • 上传大文件到ftp C#

    我正在使用此代码将大文件上传到 ftp 站点 Code using FileStream fs new FileStream FileLoc FileMode Open FileAccess Read string ftpUrl strin
  • 升级到jetty-9.3.3后JSP编译错误

    我有一个在嵌入式 Jetty 7 6 8 jdk 6 上运行的 webapp 应用程序 但由于浏览器上的 Diffie Hellman 错误 我们决定迁移到较新版本的 Jetty 因此 我们迁移到 Jetty 9 3 3 由于Jetty 9
  • Hibernate 问题 java.lang.Boolean 无法使用 JDK 1.7 转换为 java.lang.String

    我面临着 Hibernate 的问题 使用 Hibernate 3 2 6 和 JDK 1 7 0 21 这个问题是由于 JDK 与 Hibernate 版本的兼容性造成的吗 这个问题是随机的 我仍然无法找到重现的步骤 2014 07 14