创建自定义查询方法时在 JPA 中创建查询异常

Creating query exception in JPA while creting custom query method

自定义查询方法的 JPA 存储库抛出错误:

org.h2.jdbc.JdbcSQLException: Table "NBMRBANKDTLSENTITY" not found; SQL statement:
select NBMRBankDtlsEntity from NBMRBankDtlsEntity  where NBMRBankDtlsEntity.ipphId = ? [42102-191]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)

Class :

@Repository
public interface NBMRBankDtlsRepository extends JpaRepository<NBMRBankDtlsEntity, Long> {

    @Query(value ="select n from NBMRBankDtlsEntity n  where n.ipphId = :ipphId",nativeQuery = true)
    Optional<NBMRBankDtlsEntity> findByIPPHId(@Param("ipphId") Long ipphId);

}

错误消息告诉您:Table "NBMRBANKDTLSENTITY" not found。因此它可能不存在。要解决此问题,您必须通过脚本或通过 hibernates schema creation 功能手动创建 table。

我已经在创建一个 table 并插入记录,之后只有我调用这个自定义查询方法。

我发现了这个问题,因为我正在使用 nativeQuery = true,所以它期望正常的 sql 查询直接查询数据库,而不是 java 查询,这会产生问题。现在在下面更改后它工作正常,

@Query(value = "SELECT * from NB_MR_BANK_DTLS WHERE IPPH_ID = :ipphId",nativeQuery = true)

对于 java 查询我们可以直接使用,因为它在查询数据库时在内部转换为 SQL,

@Query(值="select p from NBMRBankDtlsEntity p WHERE p.ipphId = :ipphId")