zoukankan      html  css  js  c++  java
  • Hibernate 异常 Unable to instantiate default tuplizer

    .

    .

    .

    .

    .

    今天在做Hibernate和Spring整合,在一张表中多添加了三个字段,它们的类型分别是INT、BIT和DATETIME,然后手动修改了实体类和.hbm.xml,启动单元测试的时候遇到了一个问题,控制台上报出了一大堆异常和堆栈信息,嵌套到最终的一个异常是Unable to instantiate default tuplizer,于是开始在Google上查相关资料,查了很久,查出了几种可能导致该异常的方法,于是将其记录下来,分享给遇到同样问题的网友。

    第一种可能是缺少javassist.jar包,下面给出下载地址。

    http://mirrors.ibiblio.org/pub/mirrors/maven/javassist/jars/javassist-3.0.jar

    第二种可能是hibernate.cfg.xml的mapping配置错误,仔细检查这个文件,把有错误的先注释掉再试试。

    第三种可能是某个实体类中外加了某些getXX(),而不存在XX属性,这时要在get上加@Transient,不持久化它就行了。或者是实体表或映射表中属性写的不一致导致的,所以要细心检查实体类、.hbm.xml和数据库之间的属性名、字段名还有类型是否写错了。

    结果我按照上面三种情况都做了检查也没有发现问题,最后发现了一个问题:那个BIT字段的属性名有点特殊,private Boolean isInvalid;,结果在设置getter()方法和setter()方法时被MyEclipse自动生成为下面这种形式:

    1 public Boolean isInvalid() {
    2 return isInvalid;
    3 }
    4
    5 public void isInvalid(Boolean isInvalid) {
    6 this.isInvalid = isInvalid;
    7 }

    把它们改成以下的形式就好了:

    1 public Boolean getIsInvalid() {
    2 return isInvalid;
    3 }
    4
    5 public void setIsInvalid(Boolean isInvalid) {
    6 this.isInvalid = isInvalid;
    7 }

    所以命名的时候一定要谨慎,尤其对于Boolean类型的属性更要谨慎!

  • 相关阅读:
    JS函数调用的方法
    JS 正则表达式
    JS replace()方法-字符串首字母大写
    JS案例之3——倒计时
    JS案例之2——cycle元素轮播
    jsp自定义标签
    每日记载内容总结23
    maven项目部分知识
    eclipse中整合springMvc,velocity和sitemesh
    eclipse中整合springMvc和velocity
  • 原文地址:https://www.cnblogs.com/0xcafebabe/p/2423235.html
Copyright © 2011-2022 走看看