当前位置: 首页 > 知识库问答 >
问题:

使用@query&@modifying插入spring-data-jpa,而不使用nativeQuery、save()或saveAndFlush()

顾淳
2023-03-14

我看过这些链接

  • 如何使用JPA查询将数据插入到DB中?它使用nativeQuery=true
  • 如何在Spring-Data中插入数据库?建议使用内置的save方法(还有一个saveAndFulsh()方法)
@Repository
public interface DualRepository extends JpaRepository<Dual,Long> {
    @Modifying
    @Query(? - what goes here - ?)
    public int modifyingQueryInsertPerson(@Param("id")Long id, @Param("name")String name, @Param("age")Integer age);
}

有没有办法只使用@query&@modifying(即不使用本机SQL查询&nativequery=true,或save()或saveAndFlush()来完成插入?

共有1个答案

辛龙野
2023-03-14

传递所有参数,您可以像下面这样传递java对象

 @Modifying(clearAutomatically = true)
    @Transactional
    @Query(value = "insert into [xx_schema].[shipment_p] (gpn,qty,hscode,country_of_origin,created_date_time,shipment_id) "
            + "VALUES (:#{#sp.gpn},:#{#sp.qty},  :#{#sp.hscode} ,:#{#sp.countryOfOrigin}, :#{#sp.createdDateTime}, :#{#sp.id} )", nativeQuery = true)
    public void saveShipmentPRoducts(@Param("sp") ShipmentProducts sp);

 类似资料:
  • 我的例子如下: Person是一个简单的实体,有3个字段“长id、字符串名称、整数年龄”,并映射到相应的Person表,每个表有3列

  • 使用spring-boot-starter-data-jpa(版本2.0.4.release)和PostgreSQL(版本9.5.10),我一直得到psqlexception:查询没有返回任何结果,尽管我确实使用了(这里很多人建议的)。按照一些人的建议添加也没有起到什么作用。分析StackTrace可以看到调用了,而应该调用。我能做什么? 编辑:添加完整堆栈-跟踪:

  • 我希望强制CrudRepository#save(entity)插入一个新实体,而不是先选择实体,然后在主键已经存在的情况下更新它。

  • 本文向大家介绍详解Spring Data JPA使用@Query注解(Using @Query),包括了详解Spring Data JPA使用@Query注解(Using @Query)的使用技巧和注意事项,需要的朋友参考一下 经过几天的折腾,终于到了学习一个重量级的查询方式上,使用@Query注解,使用注解有两种方式,一种是JPQL的SQL语言方式,一种是原生SQL的语言,略有区别,后者我们更熟

  • 我正在使用(Spring数据)JpaRepository来执行cud操作。在这里我看到了两个方法save和saveandflush。在这两种方法中我得到了相同的结果,它成功地将数据保存到数据库中。那么有什么区别呢?我没有使用任何类型的事务机制,使用save方法发出commit命令。 而且