项目中使用到JdbcTemplate中的KeyHolder,代码如下:

String sql = "insert into web_users(username, password, phone, company) values(?,?,?,?)";
KeyHolder keyHolder = new GeneratedKeyHolder();
getJdbcTemplate().update(
con -> {
PreparedStatement ps = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
ps.setString(1, user.getUsername());
ps.setString(2, user.getPassword());
ps.setString(3, user.getPhone());
ps.setString(4, user.getCompany());
return ps;
}, keyHolder);
int userid = (int) keyHolder.getKeys().get("id");
return userid;

当执行到这段代码的时候会报错

org.postgresql.util.PSQLException: ERROR: null value in column "id" violates not-null constraint

考虑到应该是id字段默认值有问题,应该设置为 nextval('demo_users_seq'::regclass) ,

需要创建

SEQUENCE 
CREATE SEQUENCE web_users_seq INCREMENT 1 MINVALUE 1 MAXVALUE 9223372036854775807 START 1;

设置完毕之后再次尝试,可以成功插入值。

最新文章

  1. <JavaScript语言精粹>--<读书笔记三>之replace()与正则
  2. Http协议相关内容
  3. 关于MySQL存储过程中遇到的一个错误
  4. bzoj1266最短路+最小割
  5. “CEPH浅析”系列之八——小结
  6. OpenCV成长之路(3):模仿PhotoShop中魔术棒工具
  7. 33 网络相关函数(一)——live555源码阅读(四)网络
  8. MinGW平台 openjpeg-2.1.0 静态编译后未定义引用的解决方法
  9. Adaboost算法结合Haar-like特征
  10. 如何在Ubuntu/CentOS上安装Linux内核4.0
  11. Zookeeper 4、Zookeeper开发
  12. linux之awk
  13. SQL Server 开发利器 SQL Prompt 6.5 T-SQL智能感知分析器 下载地址 完全破解+使用教程
  14. [ios] 微信订阅号: ios博文精选
  15. leetcode — maximum-depth-of-binary-tree
  16. work2:贪吃蛇
  17. vue项目中跳转到外部链接方法
  18. Python Tornado搭建高并发Restful API接口服务
  19. C++ 计算直线的交点数(动态规划)
  20. mysql 5.7.12 winx64安装配置方法图文教程

热门文章

  1. Python之旅_第一章Python入门
  2. Vue 2.x + Webpack 3.x + Nodejs 多页面项目框架(下篇——多页面VueSSR+热更新Server)
  3. redis入门(04)redis的数据类型
  4. linux下的Shell编程(8)自定义函数
  5. 九、Python+Selenium模拟用QQ登陆腾讯课堂,并提取报名课程(练习)
  6. C#微信公众号——自定义菜单
  7. leetcode算法:Island Perimeter
  8. Django REST framework+Vue 打造生鲜超市(四)
  9. Python_fullstack_test1
  10. vscode设置出错, 无法自动补全