日期:2014-05-18  浏览次数:20731 次

困扰多日的问题!严重: ORA-01400: 无法将 NULL 插入
控制台报错如下:

Hibernate: 
    insert 
    into
        JMJL.MAP_T_RELAY_STATION
        (DATA_GUID, RELAY_STATION_NAME, X, Y) 
    values
        (?, ?, ?, ?)
2011-5-3 16:08:53 org.hibernate.util.JDBCExceptionReporter logExceptions
警告: SQL Error: 1400, SQLState: 23000
2011-5-3 16:08:53 org.hibernate.util.JDBCExceptionReporter logExceptions
严重: ORA-01400: 无法将 NULL 插入 ("JMJL"."MAP_T_RELAY_STATION"."RELAY_STATION_ID")


大家看看怎么回事?

数据库驱动不会有问题的,估计是设置id的生成方式问题。但是设成 native 也不顶用。
如果设置成sequence的话,不知道sequence 的name值。公司原来的数据库,不能随便更改!

------解决方案--------------------
RELAY_STATION_ID 字段有非空约束吗? 这个约束不能改,或者你一定要插NULL进去吗?
------解决方案--------------------
公司难道不让看数据库吗?
你把它换成sequence后,然后在表的映射文件下加入 <param name="sequence">S_USER </param>(S_USER为序列的名称)
------解决方案--------------------
你是数据库中有约束(非空约束),你debug一下,看看,你接收的值是不是都有值
------解决方案--------------------
断点一下。。
------解决方案--------------------
引用:
引用:

断点一下。。

执行到this.getHiberateTemlate.save(obj)这一句,就不执行了。

看obj相应的字段是否为空,感觉好神奇
------解决方案--------------------
公司应该装了plsql developer 吧,  你进去之后,找到Sequence,
下面有很多已经建好的序列,  一般序列的命名都是有规范的,你找到
与你表相对应的序列就好了啊,你不会连表都不知道吧?