前提・実現したいこと
SpringBootにおいて、JpaRepository
を継承しているRepositoryインタフェースを用意し、JpaRepository
で定義されている deleteById
を呼び出すとエラーが発生します(overrideすれば正常に実行できます)。
JpaRepository
クラスで実装されているはずのdeleteById
をそのまま使用できない理由は何でしょうか。
Serviceクラス
@Transactional public void delete(int id) { repository.deleteById(id); }
Repositoryインタフェース(Repositoryに以下を記載すると正常に実行されます。)
@Modifying @Query(value = "DELETE AAA WHERE RECORD_ID = :id", nativeQuery = true) void deleteById(@Param("id") int id);
Repositoryインタフェースで利用しているEntityクラス
@Entity @Table(name = "AAA") @NoArgsConstructor @AllArgsConstructor @Data public class BBB extends TransactionEntity implements Serializable { /** * Serial Version UID : 1 */ private static final long serialVersionUID = 1L; @Id @Column(name = "CCC") private Integer ccc; @Id @Column(name = "RECORD_ID") private Integer recordId; @ManyToOne @JoinColumn(name = "RECORD_ID") private BBB bbb; @ManyToOne @JoinColumn(name = "CCC") private DDD ddd; }
■■API実行時に以下のエラーメッセージが発生しました。
JpaRepository
インタフェースで実装されているデフォルトのdeleteById
をそのまま使用した際(新しくdeleteById
を作成しなかった際)。
発生している問題・エラーメッセージ
{ "timestamp": "2018-11-15T13:28:14.296+0000", "status": 500, "error": "Internal Server Error", "message": "org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute statement", "path": "/api/v2/records/19", }
補足情報(FW/ツールのバージョンなど)
Java Spring BootでAPIを構築しており、DBMSにはDB2を使用しております。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。