相关疑难解决方法(0)

在PostgreSQL中重复更新时插入?

几个月前,我从Stack Overflow的答案中学到了如何使用以下语法在MySQL中一次执行多个更新:

INSERT INTO table (id, field, field2) VALUES (1, A, X), (2, B, Y), (3, C, Z)
ON DUPLICATE KEY UPDATE field=VALUES(Col1), field2=VALUES(Col2);
Run Code Online (Sandbox Code Playgroud)

我现在切换到PostgreSQL,显然这是不正确的.它指的是所有正确的表,所以我认为这是使用不同关键字的问题,但我不确定PostgreSQL文档中的哪个被覆盖.

为了澄清,我想插入几个东西,如果它们已经存在则更新它们.

sql postgresql upsert sql-merge

611
推荐指数
15
解决办法
40万
查看次数

没有冲突时如何使用Spring JPA将记录插入数据库

我有一个Spring Boot应用程序,它使用连接到PostgreSQL数据库spring-data-jpa,这是我的实体,具有近40个字段

现在将实体保存到数据库中,我只是使用studentRepository.save方法

studentRepository.save(new StudentEntity());
Run Code Online (Sandbox Code Playgroud)

DAO实体

  @Table
  @Entity
  public class StudentEntity {

     @Id
     @Generate( using database sequenece)
     private long studentId;

     private String studentName;

     private String dept;

     private String age;
      ..
      ..
      }
Run Code Online (Sandbox Code Playgroud)

资料库

 public interface StudentRepository implements JPARepository<Long, Student> {
   }
Run Code Online (Sandbox Code Playgroud)

但是现在我有一个要求,如果表中有任何学生记录,name并且dept我不应该插入新记录,我知道我可以将PostgreSQL ON CONFLICT与本机查询一起使用,但是如果我使用本机查询,则必须在其中指定所有40个字段查询和作为方法参数看起来很丑陋。

有什么办法可以简化它?

本机查询示例

@Query(value = "insert into Users (name, age, email, status) values (:name, :age, :email, :status)", nativeQuery = true)

 void insertUser(@Param("name") String name, @Param("age") Integer age, @Param("status") …
Run Code Online (Sandbox Code Playgroud)

java postgresql spring-data-jpa spring-boot

4
推荐指数
1
解决办法
1102
查看次数