创建自定义查询方法时在 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")
自定义查询方法的 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")