上一次说了Hibernate这个异常,因为我那次没有把自增的主键设为"increment",不过后来发现其他情况也会出现这个异常,原因情况比较多,归纳了一下,觉得还是因为Hibernate并没有跟数据库有非常密切的交互,所以后台数据库里出问题了,也不能及时反映在Hibernate中,而仅仅用一个Could not execute JDBC batch update来应付开发人员~
解决办法就是,我们可以去查看数据库日志,每当Hibernate出现这个异常的时候,一般来说都是因为不满足数据库的约束造成的,比如唯一约束,外键约束,自增约束等等~ 我们只要配置好了数据库的日志,那么日志就会清清楚楚地告诉我们是哪里出了问题~
这里我来简单说一下PostgreSQL的日志配置方法:
1- 打开PostgreSQL安装目录下的data文件夹下的postgresql.conf文件,修改 # - What to Log - 那里如下:
debug_print_parse = off
debug_print_rewritten = off
debug_print_plan = off
debug_pretty_print = off
log_connections = on
log_disconnections = on
log_duration = on
log_line_prefix = '<%t ; PID:%p;Command Tag:%i;SessionID:%c;SessionLineNum:%l;SessionStartTime:%s;TranID:%x>' # Special values:
# %u = user name
# %d = database name
# %r = remote host and port
# %h = remote host
# %p = PID
# %t = timestamp (no milliseconds)
# %m = timestamp with milliseconds
# %i = command tag
# %c = session id
# %l = session line number
# %s = session start timestamp
# %x = transaction id
# %q = stop here in non-session
# processes
# %% = '%'
# e.g. '<%u%%%d> '
log_statement = 'all' # none , ddl , mod , all
#log_hostname = off
注意:log_line_prefix 那行配置的就是你将从日志文件中看到的东西~ 执行语句,变量都包括了,一览无余~
2- 修改完别忘了保存,然后在控制面板-管理工具-服务中重启PostgreSQL服务~ 查看日志的地方可以在data文件夹下的pg_log文件夹里,也可以到pgAdmin中,选中数据库,然后点“工具-服务器状态-日志档”。
哈哈,这回再有Could not execute JDBC batch update异常,就再也不怕找不到原因摸不着头脑了~
有疑问或者建议,随时跟我联系给我留言~