2017-04-22 33 views
1

問題通過擴展ReactiveCrudRepository,試圖將spring web與spring數據進行反應。我收到以下錯誤spring-data-commons-2.0.0:找不到類型爲T的屬性刪除! ReactiveCrudRepository

Caused by: org.springframework.data.mapping.PropertyReferenceException: No property delete found for type Product! 
     at org.springframework.data.mapping.PropertyPath.lambda$new$0(PropertyPath.java:82) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na] 
     at java.util.Optional.orElseThrow(Optional.java:290) ~[na:1.8.0_101] 
     at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:82) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na] 
     at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:304) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na] 
     at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:284) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na] 
     at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:243) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na] 
     at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:211) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na] 
     at org.springframework.data.repository.query.parser.Part.<init>(Part.java:81) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na] 
     at org.springframework.data.repository.query.parser.PartTree$OrPart.lambda$new$0(PartTree.java:239) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na] 
     at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[na:1.8.0_101] 
     at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) ~[na:1.8.0_101] 
     at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) ~[na:1.8.0_101] 
     at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[na:1.8.0_101] 
     at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[na:1.8.0_101] 
     at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[na:1.8.0_101] 
     at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:1.8.0_101] 
     at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) ~[na:1.8.0_101] 
     at org.springframework.data.repository.query.parser.PartTree$OrPart.<init>(PartTree.java:240) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na] 
     at org.springframework.data.repository.query.parser.PartTree$Predicate.lambda$new$0(PartTree.java:368) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na] 
     at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[na:1.8.0_101] 
     at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) ~[na:1.8.0_101] 
     at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[na:1.8.0_101] 
     at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[na:1.8.0_101] 
     at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[na:1.8.0_101] 
     at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:1.8.0_101] 
     at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) ~[na:1.8.0_101] 
     at org.springframework.data.repository.query.parser.PartTree$Predicate.<init>(PartTree.java:369) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na] 
     at org.springframework.data.repository.query.parser.PartTree.<init>(PartTree.java:92) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na] 
     at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:67) ~[spring-data-jpa-2.0.0.BUILD-SNAPSHOT.jar:na] 
     at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:103) ~[spring-data-jpa-2.0.0.BUILD-SNAPSHOT.jar:na] 
     at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:214) ~[spring-data-jpa-2.0.0.BUILD-SNAPSHOT.jar:na] 
     at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:77) ~[spring-data-jpa-2.0.0.BUILD-SNAPSHOT.jar:na] 
     at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.lambda$null$0(RepositoryFactorySupport.java:410) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na] 
     at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[na:1.8.0_101] 
     at java.util.Iterator.forEachRemaining(Iterator.java:116) ~[na:1.8.0_101] 
     at java.util.Collections$UnmodifiableCollection$1.forEachRemaining(Collections.java:1049) ~[na:1.8.0_101] 
     at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) ~[na:1.8.0_101] 
     at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[na:1.8.0_101] 
     at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[na:1.8.0_101] 
     at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[na:1.8.0_101] 
     at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:1.8.0_101] 
     at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) ~[na:1.8.0_101] 
     at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.lambda$new$2(RepositoryFactorySupport.java:412) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na] 
     at java.util.Optional.map(Optional.java:215) ~[na:1.8.0_101] 
     at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.<init>(RepositoryFactorySupport.java:403) ~[spring-data-commons-2.0.0.BUILD-SNAPSHOT.jar:na] 

代碼:

產品

@Entity 
@Table(name="PRODUCT") 
public class Product implements Serializable { 


    @Id 
    @GeneratedValue 
    @Column(name="PRODUCT_ID") 
    private Long productId; 

    @Column(name="PRODUCT_NAME") 
    private String productName; 



} 

產品庫

public interface ProductRepository extends ReactiveCrudRepository<Product, Long>{ 
} 

的pom.xml

<parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>2.0.0.BUILD-SNAPSHOT</version> 
     <relativePath/> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <java.version>1.8</java.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-webflux</artifactId> 
     </dependency> 

Github上:Project Link

請建議什麼是這裏的問題以及如何解決它。發生

+0

類似問題:https://github.com/spring-projects/spring-data-examples/issues/241 –

+0

@OrtomalaLokni嘿感謝您的快速響應。由於問題沒有解決,並重新路由到計算器。讓我們試着得到有關團隊的迴應。 – Barath

+0

感謝您的github鏈接。你可以提供[MCVE](https://stackoverflow.com/help/mcve)嗎? –

回答

4

此錯誤的原因ReactiveCrudRepositorySpring Data JPA支持。

根據這一Spring Data official blog bost (November 23, 2016),只有MongoDB的,卡桑德拉和Redis的支持現在:

支持反應數據訪問

最顯著增加,使得它成爲一個里程碑是增加支持所選商店的反應式數據訪問。這意味着:反應性Spring Data存儲庫和模板用於MongoDB,Cassandra和Redis

根據Mark Paluch對jira.spring.io的評論,JPA將不被支持。

我們不會爲Spring Data JPA提供反應式支持。暴露反應式API會產生被動反應的期望,但這與JPA完全相反。 JPA阻塞,需要事務上下文,綁定到線程,整個JDBC後端也遵循阻塞方法。爲關係數據庫提供反應式API仍然可以在反應式/異步式數據庫驅動程序的情況下有意義。

這是另一個相關的StackOverflow問題:ReactiveCrudRepository to use Hibernate in spring

相關問題