Hibernate + Spring Data 中的本地插入查询

hsgswve4  于 8个月前  发布在  Spring
关注(0)|答案(3)|浏览(66)

我尝试将以下代码添加到spring data jpa存储库:

@Query("insert into commit_activity_link (commit_id, activity_id) VALUES (?1, ?2)")
  void insertLinkToActivity(long commitId, long activityId);

但应用程序不能启动异常:
Exception.js错误:org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:第1行第59列附近的VALUES [插入到commit_activity_link(commit_id,activity_id)VALUES(?1、2)]
我哪里错了?

cwtwac6a

cwtwac6a1#

我必须将nativeQuery = true添加到@Query

@Query(value = "insert into commit_activity_link (commit_id, activity_id) VALUES (?1, ?2)", nativeQuery = true)
llycmphe

llycmphe2#

使用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);
cmssoen2

cmssoen23#

您应该将@Transactional@Modifying沿着与@Query一起使用,以使用nativeQuery插入或更新数据。

@Transactional 
@Modifying
@Query(value="insert into commit_activity_link (commit_id, activity_id) VALUES 
              (:commitId, :activityId)", nativeQuery=true)
void insertLinkToActivity(@Param("commitId") long commitId,
                          @Param("activityId") long activityId);

相关问题