は、私がこのように名前付きクエリを行うことができます。Springブート:JPA QueryDSL:名前付き削除を行う方法? QueryDSLリポジトリで
public interface HistoricalDataRepository
extends PagingAndSortingRepository<HistoricalData, Long>,
QueryDslPredicateExecutor<HistoricalData> {
List<HistoricalData> findAll(Predicate predicate);
HistoricalData findByKeyAndDate(String key, String date);
@Query(value = "SELECT * FROM historical_data h WHERE "
+ " h.key = :key "
+ " AND h.date <= :date "
+ " order by date desc"
+ " limit 1"
, nativeQuery = true)
HistoricalData myFindByKeyLowerOrEqualToDate(
@Param("key") String key
, @Param("date") Date date
);
を私は(@Query
注釈付き)上記と同じ構文を使用している場合、私は
DELETE FROM HISTORICAL_DATA;
を実行するにはどうすればよいです
org.springframework.orm.jpa.JpaSystemException:
could not extract ResultSet; nested exception is
org.hibernate.exception.GenericJDBCException: could not extract ResultSet
背景:私は
を使用したくない、私は例外を取得しますhistoricalDataRepository.deleteAll();
これはパフォーマンスが非常に低いためです。
EDIT:
私の構文は次のようになります。あなたはJPAクエリだけでなく、ネイティブクエリの両方を組み合わせている、のような
@Query(value = "DELETE FROM HISTORICAL_DATA", nativeQuery = true)
void myDeleteAll();
以下のようにネイティブとしてそれを指定する必要があります'メソッド。そうでない場合は、表示されたクエリを追加したメソッドのコードを追加してください。 – manish
コードを追加しました。 – user2145488
'@ Modifying'と' @ Transactional'を使って 'myDeleteAll'メソッドをマークしましたか?可能性が高いクエリに関するニュアンスを理解するには、[公式ドキュメント](https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.modifying-queries)を必ずお読みください基になるデータを変更します。 – manish