我使用@Modifying
注释和@Query
注释执行SQL DELETE
查询,并从数据库表中删除记录。
@Modifying
@Query(value = "DELETE FROM CUSTOMERS where CUSTOMERS.ID =:customersId and CUSTOMERS.USER_ID = :userId and CUSTOMERS.USER_ID = :sellerId", nativeQuery = true)
void deleteContributeur(@Param("customersId") Long customersId, @Param("userId") Long userId, @Param("sellerId") Long sellerId);
错误:
xxx的例外。xxx。xx,原因='javax。坚持不懈TransactionRequiredException:执行更新/删除查询“和异常=”执行更新/删除查询;嵌套的异常是javax。坚持不懈TransactionRequiredException:执行更新/删除查询'
方法有默认的可见性。因此代理机制不活动!在按预期更改为公共所有内容后!
@Modifying
@Transactional
@Query(value = "DELETE FROM CUSTOMERS where CUSTOMERS.ID =:customersId and CUSTOMERS.USER_ID = :userId and CUSTOMERS.USER_ID = :sellerId", nativeQuery = true)
void deleteContributeur(@Param("customersId") Long customersId, @Param("userId") Long userId, @Param("sellerId") Long sellerId);
我使用来自Spring包的@Transactional注释,如@org.springframework.transaction.annotation.Transactional
那么它应该可以工作
您需要一个事务来运行此查询。有很多方法,但最简单的方法是使用@Transactional
注释服务方法。但请记住,它应该是公共的
,并从其他bean(包装在代理中)调用。
用@Transactional
注释服务方法。您的查询错误。试试这个:
@Modifying
@Transactional
@Query(value = "DELETE FROM CUSTOMERS where CUSTOMERS.ID =:customersId and CUSTOMERS.USER_ID IN (:userId,:sellerId)", nativeQuery = true)
void deleteContributeur(@Param("customersId") Long customersId, @Param("userId") Long userId, @Param("sellerId") Long sellerId);
我的所有存储库都在扩展commonService存储库,而commonService存储库反过来也在扩展JpaRepository和JpaSpecification 我想在CommonReadRepository中定义原生Sql查询,如:mysql:select*from table limit 1,20; @Query(value=“Select*from?1 limit?2,?3”,nativ
当我要执行以下查询时: 我得到了错误: 消息102,级别15,状态1,第1行“,”附近的语法不正确。 编辑: 我要删除klantId 3。
我正在尝试看看这是否是使用spring JPA编写删除查询的正确方法。我有一个表,主键为,外键为。我想基于删除一行。我无法在JPA中仅使用方法,因为不是唯一键。于是我写了新方法: 我从https://javadeveloperzone.com/spring-boot/-data-jpa-delete-query/#3_delete_operation_using_custom_query中找到了这
问题内容: 我有一个实体和一个实体。关系的定义如下: 现在,当我删除角色时,需要从具有该角色的所有用户中删除该角色。通常,您可以通过查找具有该角色的所有用户,从列表中删除该角色并保存用户来执行类似的操作。但是,当可能有超过一百万的用户时,我不想遍历应用程序中的这么多实体。因此,我想使用本机查询从联接表中删除行。我尝试将其添加到我的存储库中: 但是,当我这样做时,我在日志中看到以下内容: 我不明白在
我使用Spring引导和Spring数据JPA。它工作得很好但是!我需要使用复杂的本地查询从Oracle数据库(源数据从SAP ERP)。 假设查询包含5个joned表(一个键或组合键)。我可以使用很多参数。 解决方案: 1)由于耗时,使用JPA为该查询编写新查询是不真实的。创建表之间的所有键关系似乎很复杂。 2)为了运行这些查询,我使用JDBC。这很容易,因为我准备了本机查询。但我深信这种做法是
问题内容: 是否可以在单个SQL语句中执行以下操作: 例如,在提示中使用电话号码的子集。然后查询其中包含电话号码的数据库,并返回原始子集中哪些电话号码不在我的数据库中?我的数据库是Oracle 10g。 基本上,我不想知道哪个电话号码不在数据库中,而是要取回它们之间的电话号码。 问题答案: 假设电话号码是NUMBER,则可以生成特定范围内的所有电话号码的列表 然后,您可以将该范围内所有电话号码的列