zoukankan      html  css  js  c++  java
  • Postgresql 创建SEQUENCE,Springboot中使用KeyHolder

    项目中使用到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;

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

  • 相关阅读:
    lnmp环境搭建
    Git常用命令
    博客园写随笔环境搭建
    Win常用软件
    Docker环境搭建
    ESP-8266 RTOS 环境搭建
    查看Linux信息
    博客园markdown语法
    Java后台技术(TDDL)
    Java后台技术(Dubbo入门)
  • 原文地址:https://www.cnblogs.com/zacky31/p/8602614.html
Copyright © 2011-2022 走看看