春JPA更新:のexecuteQuery(とデータ操作文を発行することはできません)

Valentyn Hruzytskyi:

私はテーブルを更新するためのハンドルクエリを使用しようとSQLするデータベース。

コード:

    @Autowired
    private ProducerRepository producerRepository;

    public void update(Producer producer){

        String name = producer.getProducerName();
        long id = producer.getId();

//        producerRepository.save(producer); //this method works well.
        producerRepository.update(name, id); //handle attempt - throws exeption in this string
    }

ProducerRepository:

@Repository
    public interface ProducerRepository extends JpaRepository<Producer, Long>{

        @Query(nativeQuery = true, value = "UPDATE producer SET producer_name = :pName WHERE id = :id")
        Producer update(
                @Param("pName") String pName,
                @Param("id") long id
        );
    }

すべてのパラメータproducerエンティティは正しく、producerRepository.save(producer)うまく動作します。(コンソールでもIアウトnameidフィールド-すべての権利)

だから、私は保存することができproducer、私が使用しようとすると、データベースに、しかしupdate()、私はエラーを取得する方法を。

executeQuery(とデータ操作文を発行することはできません)


PS

コンソールでのSQLクエリにも適しています

(UPDATE producer SET producer_name = 'some name' WHERE id = ....)

それは正しくリポジトリの仕事の他のSQLのネイティブクエリことに留意すべきです。春/休止状態/ JDBC設定して正しいです。

アレクセイSemenyuk:

注釈を使用してください@Modifying

これは、更新クエリの代わりの選択一つとしてメソッドに注釈付きクエリをトリガします。

2.2.6の変更クエリ https://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/reference/html/jpa.repositories.html

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=196472&siteId=1