0

我正在尝试将一列更新为空,但它给了我错误。我这样做了,将数据转换为变量,然后将其重置。但我很有趣为什么这不起作用:

@Modifying
@Query(value="UPDATE fact_header SET fact_id=null WHERE id=:ids", nativeQuery=true)
public void updateAssignedFact(@Param("ids") int id);

我收到此错误:

Caused by: javax.persistence.TransactionRequiredException: Executing an update/delete query

我看到了一些关于交易的提示。我正在使用 2 个数据库。

编辑,此代码有效:

@Modifying
@Transactional /* just added this line */
@Query(value="UPDATE fact_header SET fact_id=null WHERE id=:ids", nativeQuery=true)
public void updateAssignedFact(@Param("ids") int id);
4

1 回答 1

0

你必须需要一笔交易。

根据您的特定环境,有不同的方法可以做到这一点:

https://community.jboss.org/wiki/SessionsAndTransactions

您将在调用 updateAssignedFact 之前开始事务并在之后结束它。可能包括其他操作;我不知道你在做什么。我认为您不能(或不应该)尝试处理数据实体类中的事务。

于 2013-02-28T15:49:11.607 回答