困扰多日的问题!严重: ORA-01400: 无法将 NULL 插入

南山隐者 2011-05-03 04:12:20
控制台报错如下:

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值。公司原来的数据库,不能随便更改!
...全文
47733 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
327211663 2013-12-26
  • 打赏
  • 举报
回复
解决方法: <generator class="sequence"> <param name="sequence">id_1</param> </generator>
GentleLin 2011-05-04
  • 打赏
  • 举报
回复
公司应该装了plsql developer 吧, 你进去之后,找到Sequence,
下面有很多已经建好的序列, 一般序列的命名都是有规范的,你找到
与你表相对应的序列就好了啊,你不会连表都不知道吧?
南山隐者 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 shendun2007 的回复:]

引用 7 楼 hu_shengyang 的回复:

引用 5 楼 mockqi 的回复:

断点一下。。

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

看obj相应的字段是否为空,感觉好神奇
[/Quote]
呵呵 的确是好神奇
以前就没遇到过这种情况,这几天真的折腾的头大了。
就是因为RELAY_STATION_ID字段数据库不能自动生成,我也不清楚公司是否用的sequence来生成的。
都是老系统,现在要改版,从c#到java,许多文档都没有。头疼的很!
我设置成assigned 手动插入,也是不成功。就到上面那一句就不执行了....
啊的发哦 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hu_shengyang 的回复:]

引用 5 楼 mockqi 的回复:

断点一下。。

执行到this.getHiberateTemlate.save(obj)这一句,就不执行了。
[/Quote]
看obj相应的字段是否为空,感觉好神奇
南山隐者 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mockqi 的回复:]

断点一下。。
[/Quote]
执行到this.getHiberateTemlate.save(obj)这一句,就不执行了。
南山隐者 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 gentlelin 的回复:]

公司难道不让看数据库吗?
你把它换成sequence后,然后在表的映射文件下加入 <param name="sequence">S_USER </param>(S_USER为序列的名称)
[/Quote]
可以看啊 但是怎么找到对应的sequence呢?
谢谢。我没找到...
  • 打赏
  • 举报
回复
断点一下。。
JavaMan_KA 2011-05-03
  • 打赏
  • 举报
回复
你是数据库中有约束(非空约束),你debug一下,看看,你接收的值是不是都有值
GentleLin 2011-05-03
  • 打赏
  • 举报
回复
公司难道不让看数据库吗?
你把它换成sequence后,然后在表的映射文件下加入 <param name="sequence">S_USER </param>(S_USER为序列的名称)
南山隐者 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yingzhuo2011 的回复:]

RELAY_STATION_ID 字段有非空约束吗? 这个约束不能改,或者你一定要插NULL进去吗?
[/Quote]
对 是非空约束。
我也知道是不能插入null值,但是应该是orcacle自动生成RELAY_STATION_ID值的。
现在的问题是数据库不去自动生成,所以就报这个错误了。
我设置成assigned 让手动插入值,也不行。执行到这一句this.getHiberateTemlate.save(obj)就不行了,执行不下去了。
yingzhuo2011 2011-05-03
  • 打赏
  • 举报
回复
RELAY_STATION_ID 字段有非空约束吗? 这个约束不能改,或者你一定要插NULL进去吗?

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧