ReactiveStreamCrudRepository查询PostgreSQL无数据排查求助
问题:ReactiveStreamsCrudRepository无法从PostgreSQL返回数据(已解决)
问题描述
我是响应式编程与Micronaut的新手,使用Kotlin开发CRUD API时遇到了问题:ReactiveStreamsCrudRepository无法从PostgreSQL数据库返回数据。已确认数据库凭证正确,且待查询的记录确实存在。
相关代码实现
Repository层
@JdbcRepository(dialect = Dialect.POSTGRES) interface EmployeeCrudRepository: ReactiveStreamsCrudRepository<EmployeeMaster, Int>, EmployeeRepository { }
interface EmployeeRepository { fun findByEmployeeIdAndTcin(employeeId: UUID, tcin: String): Mono<EmployeeMaster> }
实体类
@MappedEntity @Table(name="employee") data class EmployeeMaster ( @Id @Column(name = "transaction_id") val transactionId: Int, @Column(name = "employee_id") val employeeId: UUID, @Column(name = "item_id") val itemId: UUID )
业务逻辑层
fun getEmployeeDetailsResponse(registryId: UUID, itemId: String) : Mono<EmployeeDetailsDTO> { return getEmployeeDetails(employeeId, itemId) .map { employeeDetails -> EmployeeDetailsDTO(employeeDetails) } .switchIfEmpty { logger.info("No records found") Mono.just(ItemDetailsDTO()) } }
fun getEmployeeDetails(employeeId: UUID, itemId: String) : Mono<EmployeeDetailsDTO> { return employeeRepository.findByEmployeeIdAndTcin(registryId = registryId, tcin = itemId) .map { employeeDetails -> EmployeeDetailsDTO(employeeDetails) } .switchIfEmpty { logger.info("No records found") Mono.just(EmployeeDetailsDTO()) } }
Flyway配置
flyway { // ./gradlew -Ppostgres_host=localhost -Ppostgres_ssl='' -Ppostgres_user=postgres -Ppostgres_pwd=postgres flywayMigrate -i url = "jdbc:postgresql://${postgres_host}:5432/postgres${postgres_ssl}" user = "${postgres_user}" password = "${postgres_pwd}" schemas = ['public'] }
问题解决
排查后发现传入的参数有误,代码实现本身没有问题,修正参数后可以正常返回响应。
内容的提问来源于stack exchange,提问作者Aditya
相关产品推荐
相关产品推荐

