我的例子如下:
Person是一个简单的实体,有3个字段“Long id、String name、intger age”,并且映射到相应的Person表,上面有3列)
@Repository
public interface PersonRepository extends JpaRepository<Person,Long> {
@Modifying
@Query(? - what goes here - ?)
public int modifyingQueryInsertPerson(@Param("id")Long id, @Param("name")String name, @Param("age")Integer age);
}
有没有办法通过使用@Query
重要的
请帮帮忙。
我找到了这个解决方案,但它不适用于“插入忽略”或“重复密钥更新”:
@Repository
public interface DualRepository extends JpaRepository<Dual,Long> {
@Modifying
@Query("insert into Person (id,name,age) select :id,:name,:age from Dual")
public int modifyingQueryInsertPerson(@Param("id")Long id, @Param("name")String name, @Param("age")Integer age);
}
我的例子如下: Person是一个简单的实体,有3个字段“长id、字符串名称、整数年龄”,并映射到相应的Person表,每个表有3列
问题内容: 我没有看到重复的约束。它在哪里? 问题答案: 这很可能是因为您至少命名了一个约束,且其标识符与列相同: 应该为约束使用其他标识符,例如: 和表中的相同: 这些是我看到的仅有的三个,但可能还有其他我想念的。
问题内容: 我到处搜寻,但是没有找到可能。 我有这个MySQL查询: 字段ID具有“唯一索引”,因此不能有两个。现在,如果数据库中已经存在相同的ID,我想对其进行更新。但是我真的必须再次指定所有这些字段,例如: 要么: 我已经在插入中指定了所有内容… 需要特别说明的是,我想使用变通方法来获取ID! 我希望有人能告诉我最有效的方法是什么。 问题答案: 没有其他方法,我必须两次指定所有内容。首先是插入
问题内容: 我正在使用PHP。 请问什么是将新记录插入具有唯一字段的数据库的正确方法。我正在批量插入很多记录,我只想插入新记录,并且我不想重复条目有任何错误。 有没有唯一方法可以首先进行SELECT并查看条目是否在INSERT之前已经存在-并且仅在SELECT不返回任何记录时才插入INSERT?我希望不是。 我想以某种方式告诉MySQL忽略这些插入而没有任何错误。 谢谢 问题答案: 如果在重复记录
好的,这个问题不是关于如何返回ID,而是更像是如何跳过它...我有一种情况,我使用last_insert_id()获取最后插入的行的id,但如果没有插入行,我希望得到一个零。问题如下: I INSERT...UPDATE一些记录:由于行是新插入的,因此返回所有ID 然后重复这个过程:这一次不返回ID。耶!这正是我想要的 我更改了一个列值并重复该过程:但现在返回了我更改了列值的行的ID。这让我很生气
我目前使用JOOQ的可更新记录如下模式插入: 在,我希望使用数据库中的值更新,例如,如果表具有自动递增的列,将返回其值。 如果列具有唯一约束,则当违反该约束时,将抛出。我的问题是可以告诉JOOQ不要抛出异常,但仍然用现有的值更新记录吗?