【问题标题】:Insert only a record using CrudRepository使用 CrudRepository 仅插入一条记录
【发布时间】:2016-11-23 14:07:01
【问题描述】:

当调用 Spring 数据中的从 CrudRepository 保存时,它要么更新数据库中的现有记录,要么在该记录的 id 为空/空白时创建新记录。

我有一个应用程序在主键为String 的表中插入和更新记录,因此不会递增,但该列中存储的值是Integer。因此,应用程序获取max(last_insert_id(string)) 并为新记录递增并将其保存到数据库中。还有另一个应用程序正在执行相同的过程,在某些情况下,数据被覆盖。

所以当使用CrudRepository 时,如果我只能插入记录而不是更新它,那应该有助于解决问题。如何使用CrudRepository 只创建一条新记录,是否有任何内置支持?

【问题讨论】:

  • 您知道当对同一个数据库使用多个应用程序时,确定主键的策略很糟糕吗?
  • @M.Deinum 我知道这是一个糟糕的策略,但这是我继承的东西,无法做出改变,因为有很多其他应用程序在使用它,所以我现在必须忍受它.
  • 使用它而不是使用 JPA(不一定是 Spring Data JPA)。为 ids 创建一个自定义生成器,其中包含您现在正在执行的逻辑。这样,应用程序中的检测逻辑将(更)可靠地工作,而不是自己在应用程序中进行。

标签: java mysql spring spring-boot spring-data


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 2017-01-07
    • 1970-01-01
    • 2020-10-31
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多