那么在为save()
方法插入新的主键的情况下,将导致保存,否则将更新该特定实体。因此,在更新期间,我始终需要确保该方法不会为无效ID创建新实体。
因此,为了克服这个问题,我看到许多开发人员在更新之前使用find()
方法调用,以确保给定的主键已经存在。
因此,为了克服这个问题,我想到了一个自定义的更新查询,然后我可以通过在JPararePository中将查询的返回类型声明为int来确定是否执行了该查询。因此,根据我的知识,查询将输出1表示成功,输出0表示更新失败。
这个讨论的最终目的是避免在更新之前检查主键是否存在。因此,如果有更好的方法,请说明。
例:
@Modifying
@Query("UPDATE Car c SET c.status =:status WHERE c.id =:id")
int updateCar(@Param("status") String status, @Param("id") String id);
从更新中返回的int是更新的行数。
所以我需要知道的是,在为updateCar()方法提供不存在的主键的情况下,我能否始终确保更新不会因为该无效的主键而成功。我的意思是,如果更新由于一个不同的错误而失败,会发生什么?
如果更新由于任何其他原因而失败,那么您将得到一个异常。
问题内容: 我要实现以下目标: 表的当前状态(my_table) (my_table2)的查询结果 表的预期状态(my_table) 可以在一个更新查询中完成吗?我正在RHEL 5.0上寻找Sybase ASE 12.5 编辑: 我找不到Sybase的解决方案,但该问题的当前答案适用于MS SQL Server。 问题答案: 更新 在MS SQL Server中,您将执行此操作。OP指出这在Syb
问题内容: 这对我来说是一个常见的SQL查询: 有什么办法可以避免拥有两个几乎相同的子查询?该查询是一个明显的简化,但是性能会受到影响,并且查询的内容不必要地凌乱。 问题答案: 不幸的是,Informix不支持UPDATE语句中的FROM子句。解决方法,您将获得更好的结果(性能),方法是将UPDATE更改为MERGE语句。 仅当您的数据库为11.50或更高版本时,此方法才有效 查看IBM Info
本文向大家介绍使用MySQL WHERE子句中的多个值进行更新,包括了使用MySQL WHERE子句中的多个值进行更新的使用技巧和注意事项,需要的朋友参考一下 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 这是使用WHERE子句中的多个值更新的查询- 让我们再次检查表记录- 这将产生以下输出-
问题内容: 我正在尝试用另一列分组的该列的最大值更新表中的一列。 例如,假设我们有一个名为transactions的表,其中有两列:和。无论出于何种原因,我们都希望将其设置为等于每个值的最大值。 我很沮丧并且不擅长在SQL中执行这样的操作,但是到目前为止,这是我所拥有的: 问题答案: 除了@Gordon已经指出的语法错误之外,通常最好 排除空更新 : 无需更改任何内容就无需编写新的行版本(几乎需要
我已经扩展了TreeCell和TreeItem类。MyTreeItem包含一个自定义属性,我在MyTreeCell中使用它来渲染图形/字体等。问题是当我设置MyTreeCell.custom属性我不知道如何使TreeView/单元格重绘。 例如: 任何关于解决方案或(缺乏)设计方法的意见都受到赞赏。
问题内容: 我在选择要使用的子查询上遇到问题。我正在尝试以下操作: 具有主键的表名在哪里?并且类型为INT。执行此操作时,出现以下错误: 问题答案: 从这篇网络文章 发生此错误的原因是,当您在内部选择中还使用同一表作为更新条件时,MySQL不允许对表进行更新。本文继续提供一种解决方案,即使用临时表。 使用此示例,您的更新应为: