hibernate + spring数据中的本机插入查询
Posted
技术标签:
【中文标题】hibernate + spring数据中的本机插入查询【英文标题】:native insert query in hibernate + spring data 【发布时间】:2014-09-10 17:32:48 【问题描述】:我尝试将以下代码添加到 spring data jpa 存储库:
@Query("insert into commit_activity_link (commit_id, activity_id) VALUES (?1, ?2)")
void insertLinkToActivity(long commitId, long activityId);
但一个应用程序无法启动异常:
原因:org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:第 1 行第 59 列附近的 VALUES [插入 commit_activity_link (commit_id, activity_id) VALUES (?1, ?2)]
我哪里错了?
【问题讨论】:
【参考方案1】:使用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);
【讨论】:
【参考方案2】:我必须将nativeQuery = true
添加到@Query
@Query(value = "insert into commit_activity_link (commit_id, activity_id) VALUES (?1, ?2)", nativeQuery = true)
【讨论】:
以上是关于hibernate + spring数据中的本机插入查询的主要内容,如果未能解决你的问题,请参考以下文章
最新的 Spring Data/Hibernate 在本机查询中不支持 java.time.LocalDate?
在 Spring Boot 中向本机查询添加参数会导致“org.hibernate.exception.SQLGrammarException”,