Micronaut DataAccessException:无法转换类型考虑定义TypeConverter bean来处理这种情况

问题描述

我正在尝试使用Micronaut版本2.0.1运行Micronaut数据JDBC示例,我正在使用MySQL数据库作为数据源。

https://github.com/micronaut-projects/micronaut-data/tree/master/examples/example-jdbc-groovy

当我访问http://localhost:8080/owners/ URL时,会显示此错误消息。

Internal Server Error: Cannot convert type [class java.lang.Long] with value [1] to target type: class webapp.domain.Owner. Consider defining a TypeConverter bean to handle this case.

这是堆栈跟踪:

8:11:58.387 [main] INFO  io.micronaut.runtime.Micronaut - Startup completed in 9736ms. Server Running: http://localhost:8080
08:12:10.804 [nioEventLoopGroup-1-2] DEBUG io.micronaut.data.query - Executing Query: SELECT owner_.`id`,owner_.`age`,owner_.`name` FROM `owner` owner_
08:12:11.026 [nioEventLoopGroup-1-2] ERROR i.m.h.s.netty.RoutingInBoundHandler - Unexpected error occurred: Cannot convert type [class java.lang.Long] with value [1] to target type: class webapp.domain.Owner. Consider defining a TypeConverter bean to handle this case.
io.micronaut.data.exceptions.DataAccessException: Cannot convert type [class java.lang.Long] with value [1] to target type: class webapp.domain.Owner. Consider defining a TypeConverter bean to handle this case.
    at io.micronaut.data.runtime.mapper.ResultReader.lambda$convertRequired$0(ResultReader.java:50)
    at java.base/java.util.Optional.orElseThrow(Optional.java:408)
    at io.micronaut.data.runtime.mapper.ResultReader.convertRequired(ResultReader.java:49)
    at io.micronaut.data.jdbc.operations.DefaultJdbcRepositoryOperations$3.tryAdvance(DefaultJdbcRepositoryOperations.java:375)
    at java.base/java.util.Spliterator.forEachRemaining(Spliterator.java:326)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
    at io.micronaut.data.jdbc.operations.DefaultJdbcRepositoryOperations.lambda$findAll$6(DefaultJdbcRepositoryOperations.java:410)
    at io.micronaut.transaction.support.AbstractSynchronousTransactionManager.executeRead(AbstractSynchronousTransactionManager.java:155)
    at io.micronaut.data.jdbc.operations.DefaultJdbcRepositoryOperations.findAll(DefaultJdbcRepositoryOperations.java:408)
    at io.micronaut.data.runtime.intercept.DefaultFindAllInterceptor.intercept(DefaultFindAllInterceptor.java:52)
    at io.micronaut.data.runtime.intercept.DefaultFindAllInterceptor.intercept(DefaultFindAllInterceptor.java:36)
    at io.micronaut.data.intercept.DataIntroductionAdvice.intercept(DataIntroductionAdvice.java:80)
    at io.micronaut.aop.chain.MethodInterceptorChain.proceed(MethodInterceptorChain.java:69)
    at io.micronaut.validation.ValidatingInterceptor.intercept(ValidatingInterceptor.java:106)
    at io.micronaut.aop.chain.MethodInterceptorChain.proceed(MethodInterceptorChain.java:69)
    at webapp.repositories.OwnerRepository$Intercepted.findAll(Unknown Source)
    at webapp.repositories.OwnerRepository$findAll.call(Unknown Source)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:130)
    at webapp.controllers.OwnerController.all(OwnerController.groovy:20)
    at webapp.controllers.$OwnerControllerDefinition$$exec1.invokeInternal(Unknown Source)

如何解决此错误?

谢谢 SR


添加OwnerRepository代码。

package webapp.repositories

import io.micronaut.data.jdbc.annotation.JdbcRepository
import io.micronaut.data.model.query.builder.sql.Dialect
import io.micronaut.data.repository.CrudRepository
import webapp.domain.Owner

@JdbcRepository(dialect = Dialect.MYSQL)
interface OwnerRepository extends CrudRepository<Owner,Long> {

    @Override
    List<Owner> findAll()

    Optional<Owner> findByName(String name)
}

添加样本回购。 https://github.com/sfgroups-k8s/webapp 在MySQL启动期间将失败

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...