不能执行update,为什么得看源代码了

解决方案 »

  1.   

    PERSON 不要设置ID,你的生成策略已经是UUID了,Hibernate会给你搞定。
      

  2.   

    不好意思,没看完整
    java.sql.BatchUpdateException: ORA-01401: 列に挿入した値が大きすぎます。 
    看看是不是字段长度不够。。
      

  3.   

    log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).不是没有配置Log4j么
      

  4.   

    非常感谢各位的回答:首先不是插入值的长度的问题,我已经试过了.
    其次代码是没有问题的,我可以执行查询,删除,更新等操作,但是就是不能插入数据.
    ID是数据库里面存在的列,如果不设置ID的话,是不能插入的.
      

  5.   


    看你的配置,ID是自动生成的32位字符串,在代码中是不需要调用pojo的setId()方法的(如果需要手动设置,配置uuid.hex有什么意义呢?)。你看看数据库里面ID字段是多少位的,代码中有setId的操作的话,删掉。试试,用代码来验证是最好的方法:)
      

  6.   

    楼上说得没有错!~!
    <id name="id" column="ID" type="string"> 
         <generator class="uuid.hex"/> 
    </id>既然你的主键是uuid.hex类型的,那就没有那个必要手动去设置~!
    你还可以把class = "uuid.hex"改成class="assigned"也就不会有问题了!~!
      

  7.   


    Exception in thread "main" org.hibernate.exception.ConstraintViolationException:
     Could not execute JDBC batch update
     没有找到JDBC 没有更新Hibernate: insert into PERSON (NAME, PASSWORD, ID) values (?, ?, ?) 
    所以您的数据insert不进去
    <id name="id" column="ID" type="string"> 
        <generator class="uuid.hex"/> 
    </id> 
    把class="uuid.hex"设置成为class="native"
    http://docs.huihoo.com/hibernate/reference-v3_zh-cn/associations.html
    这里有详细的native和 assigned自动标识列
    若您手手动分配的用assigned 
    自动生成的用native
      

  8.   

    hibernate框架是不支持sql语句的,你那样写是不对的.
    hibernate只支持hql语句.所以你的insert into PERSON (NAME, PASSWORD, ID) values (?, ?, ?) 
    这句话应该换成getHibernateTemplate().save(实体对象[Person]);
      

  9.   

    HQL语句啊,你怎么能写SQL语句呢?
      

  10.   

    这个SQL语句是我要Hibernate打出来的,实际的HQL语句不是这样的。
      

  11.   

    ConstraintViolationException,它报的时候违反约束异常。你是不是设置了主外建关系,违反了约束?或你插入的时候肯定关联了其他的东西,这就要看你的关联关系了。有个时候并不是你的这一步有问题,而是上一步已经存在隐性错误了。最好寻根究底。
      

  12.   


    <id name="id" column="ID" type="string"> 
        <generator class="uuid.hex"/> 
    </id> 
    //不应手动插入ID