如何使用 @Query 注释在 spring 数据 jpa 中插入自定义查询
How to make insert custom query in spring data jpa by using @Query annotation
我正在使用 mssql 和 spring 数据 JPA,我想通过使用自定义 @Query
注释将新记录插入 table。
public interface CustomerRepository extends JpaRepository<Customers, String>{
@Modifying
@Query("insert into Customers values (?1 , ?2)")
public void saveCutomer(int custId, Customer cust);
}
给出错误,
原因:org.hibernate.hql.internal.ast.QuerySyntaxException:期待 OPEN,在第 1 行第 23 列附近发现 'values' [插入 Customers 值 (?1 , ?2)]
下面我也试过了,同样的错误。
@Modifying
@Query("insert into Customers select ?1 , ?2")
public void saveCutomer(int custId, Customer cust);
您不会使用 JPQL 执行此操作。您有批量删除和更新,仅此而已。
您的选择是:
1) 如果您确实进行了显式插入,则将查询标记为本机(不推荐,除非您打算使用 JPQL 不支持的某些特定于数据库的语法。
2) 在您的存储库上使用标准 save(Entity)
方法,这当然更可取。
我正在使用 mssql 和 spring 数据 JPA,我想通过使用自定义 @Query
注释将新记录插入 table。
public interface CustomerRepository extends JpaRepository<Customers, String>{
@Modifying
@Query("insert into Customers values (?1 , ?2)")
public void saveCutomer(int custId, Customer cust);
}
给出错误,
原因:org.hibernate.hql.internal.ast.QuerySyntaxException:期待 OPEN,在第 1 行第 23 列附近发现 'values' [插入 Customers 值 (?1 , ?2)]
下面我也试过了,同样的错误。
@Modifying
@Query("insert into Customers select ?1 , ?2")
public void saveCutomer(int custId, Customer cust);
您不会使用 JPQL 执行此操作。您有批量删除和更新,仅此而已。
您的选择是:
1) 如果您确实进行了显式插入,则将查询标记为本机(不推荐,除非您打算使用 JPQL 不支持的某些特定于数据库的语法。
2) 在您的存储库上使用标准 save(Entity)
方法,这当然更可取。