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アウトname
とid
フィールド-すべての権利)
だから、私は保存することができ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