Spring Data JPA リポジトリ内で更新ネイティブ クエリを作成しています。
@Query(nativeQuery=true, value="update t_table set change = 0 where id = ?1")
@Modifying(clearAutomatically=false)
void disableChange(int id);
データベースクライアントで確認できるように、値は正しい方法で更新されますが、サーバーが再デプロイされるまで、次のトランザクションは変更を認識しません。
私のサービスは次のようになります。
@Service("my.service.class.service")
public final class MyServiceClassImpl implements MyServiceClass
{
@Autowired
private ClientRepository clientRepository;
@Override
@Secured("MY_ROLE")
@Transactional(propagation=Propagation.REQUIRES_NEW, rollbackFor=MyException.class)
public void myMethod() throws PlayTheGuruException
{
//
myMethod();
//
}
private void myMethod() throws MyException {
//
clientRepository.disableChange(22);
//
}
}
トランザクションおよび必須の伝播などで注釈を付ける必要がありmyMethod
ますか?
ネイティブクエリが問題ですか?
この問題は、更新クエリでのみ発生します。