【问题标题】:How to access PostgreSQL RETURNING value in Spring Boot DAO?如何在 Spring Boot DAO 中访问 PostgreSQL RETURNING 值?
【发布时间】:2020-11-28 15:14:46
【问题描述】:

我想返回自动生成的实体 id。 PostgeSQL 能够通过RETURNING 自动选择某些列,但我很难找到如何在 Spring Boot 中检索该值。 我想要类似的东西:

public int createUser(User user) {
    String sql = "INSERT INTO user (name, surname) VALUES (?,?) RETURNING id";
    return jdbcTemplate.update(sql,
            user.getName(),
            user.getSurname(),
            resultSet -> resultSet.getInt("id")
    );
}

【问题讨论】:

    标签: spring postgresql spring-boot dao


    【解决方案1】:

    我知道在 Hibernate 中这很简单,那么无论你使用 Repository 类还是 EntityManager,save 方法都会返回保存的实体,所以你可以这样做:

    int id = userRepository.save(user).getId();
    

    或者你有什么理由想以你的方式坚持下去?

    【讨论】:

    • 是的,很遗憾我只能使用 DAO
    • 这不是你坚持什么的问题,而是如何坚持的问题。但是如果你坚持这种oldschool方式,你总是可以通过sql方式获取id:"SELECT * FROM user WHERE name="+user.getName()+" AND surname="+user.getSurname()
    • 如果没有UNIQUE约束,它将无法在数据库中正常工作
    猜你喜欢
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 2016-04-14
    相关资源
    最近更新 更多