Chr*_*sey 6 spring-data spring-data-jpa kotlin kotlin-coroutines
在我的项目中,我有一个 Kotlin ( 1.3.72) Spring Boot( 2.3.3.RELEASE) JPA 支持的存储库,它工作得很好,Spring 应用程序上下文正常启动,项目通过了所有测试,等等:
@Repository
interface MappingRepository : CrudRepository<RoutingMapping, Long> {
fun findByCompanyId(companyId: Long): RoutingMapping?
}
Run Code Online (Sandbox Code Playgroud)
当我将其切换为像这样扩展org.springframework.data.repository.kotlin.CoroutineCrudRepository而不改变任何其他内容时:
@Repository
interface MappingRepository : CoroutineCrudRepository<RoutingMapping, Long> {
fun findByCompanyId(companyId: Long): RoutingMapping?
}
Run Code Online (Sandbox Code Playgroud)
Spring 应用程序上下文启动失败并抛出以下错误:
Caused by: org.springframework.data.mapping.PropertyReferenceException:
No property count found for type RoutingMapping!`
Run Code Online (Sandbox Code Playgroud)
这是一个令人困惑的异常,因为RoutingMapping它是映射的@Entity。我不清楚我是否遗漏了一些东西@Entity,或者是否是我对如何使用的误解org.springframework.data.repository.kotlin.CoroutineCrudRepository。
Caused by: org.springframework.data.mapping.PropertyReferenceException: No property count found for type RoutingMapping!
at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:94)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:382)
at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:358)
at org.springframework.data.mapping.PropertyPath.lambda$from$0(PropertyPath.java:311)
at java.base/java.util.concurrent.ConcurrentMap.computeIfAbsent(ConcurrentMap.java:330)
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:293)
at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:276)
at org.springframework.data.repository.query.parser.Part.<init>(Part.java:82)
at org.springframework.data.repository.query.parser.PartTree$OrPart.lambda$new$0(PartTree.java:251)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
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 org.springframework.data.repository.query.parser.PartTree$OrPart.<init>(PartTree.java:252)
at org.springframework.data.repository.query.parser.PartTree$Predicate.lambda$new$0(PartTree.java:381)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
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 org.springframework.data.repository.query.parser.PartTree$Predicate.<init>(PartTree.java:382)
at org.springframework.data.repository.query.parser.PartTree.<init>(PartTree.java:94)
at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:89)
... 137 more
Run Code Online (Sandbox Code Playgroud)
小智 1
count 是扩展 CoroutineCrudRepository 时需要实现的方法之一。我猜您还试图在您的实现类之一中返回此接口。因此,如果您添加它,那么其他方法将会失败,因为它是一个接口。相反,为了使这项工作正常进行,您可以再添加一个接口,无论您在何处尝试实现该接口,该接口都会在您的类中返回。因此,例如,我将有另一个名为 MappingMongoRepository 的接口,它具有与 MappingRepository 相同的抽象方法,并使用我的类中返回的 MappingMongoRepository 。
| 归档时间: |
|
| 查看次数: |
1713 次 |
| 最近记录: |