Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring数据REST UPSERT语句_Spring_Spring Data_Spring Data Jpa_Spring Data Rest - Fatal编程技术网

Spring数据REST UPSERT语句

Spring数据REST UPSERT语句,spring,spring-data,spring-data-jpa,spring-data-rest,Spring,Spring Data,Spring Data Jpa,Spring Data Rest,我有一个SpringREST导出的URL,我想在其中执行UPSERT操作。如果行存在,它将更新,否则将插入。我之前一直在为创建做文章,为更新做补丁,为删除做删除 有什么方法可以让URL使用PUT或so支持UPSERT操作吗?PUT方法在您正在更新的资源不存在时调用资源创建操作,从中可以明显看出。在REST中,PUT用于更新现有资源,POST用于创建。REST“约定”中未指定upsert。你们能解释一下你们的用例吗,你们需要它做什么吗?R4J,我想给你们一个API,若资源不存在,它会返回到INSE

我有一个SpringREST导出的URL,我想在其中执行UPSERT操作。如果行存在,它将更新,否则将插入。我之前一直在为创建做文章,为更新做补丁,为删除做删除


有什么方法可以让URL使用PUT或so支持UPSERT操作吗?

PUT
方法在您正在更新的资源不存在时调用资源创建操作,从中可以明显看出。

在REST中,PUT用于更新现有资源,POST用于创建。REST“约定”中未指定upsert。你们能解释一下你们的用例吗,你们需要它做什么吗?R4J,我想给你们一个API,若资源不存在,它会返回到INSERT,否则会进行更新。这通常需要来自客户端的两个调用,一个用于获取,另一个用于发布/放置。因此,这是我试图公开的一个方便的API。我在想,如果处理程序可以像BeforeSave、BeforeUpdate那样使用,那么你的“PK”是什么?这是某种类型的业务/自然ID,还是您有自己的自动生成ID?如果是后者,则会出现重复记录的问题。PK是从MySQL自动生成的记录,id列作为数据类型Longso基本上表缺少唯一约束,表有列id、用户id和语言id,现在应该对用户id和语言id有一个唯一的约束。因为我没有带宽来添加这个约束,所以只能在API中处理。为此,我需要在这里进行一个检查,如果Existi尝试了这个方法,并且当{id}没有找到行并且生成的新行具有由序列创建的新id时,它插入了新记录,那么就不会插入另一个相同的user_id+lang_id组合。如果{id}是business/natural id,我知道它可以解决重复记录的问题。