Spring数据jpa:找不到类型为void的属性flush

时间:2013-07-01 08:20:37

标签: spring-data-jpa

我使用Spring Data JPA开发Spring MVC应用程序。我构建了一个JPA存储库。

public interface AccessReportRepository extends JpaRepository<AccessReport, Long> {    
}

我也在项目中使用Spring Data Mongo和JPA。

当我运行项目时,我收到此错误。

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'lastDateController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.innolabmm.software.mongotest.springrest.ReadingService com.innolabmm.software.mongotest.springrest.LastDateController.readingService; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'readingService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.innolabmm.software.mongotest.springrest.AccessReportRepository com.innolabmm.software.mongotest.springrest.ReadingService.reportRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'accessReportRepository': FactoryBean threw exception on object creation; nested exception is org.springframework.data.mapping.PropertyReferenceException: No property flush found for type void

有没有人知道发生了什么?如果这有助于解决问题,我准备提供更多信息。提前谢谢。

2 个答案:

答案 0 :(得分:2)

您使用的是Spring Boot吗?

在Spring Boot应用程序中尝试使用JPA和Mongo时,我遇到了同样的异常。我发现存储库总是由JPA和Mongo解释,导致问题,因为我的存储库专门扩展JpaRepository

我只想生成JPA存储库,因此将以下内容添加到Application入口点。

@EnableAutoConfiguration(exclude={MongoRepositoriesAutoConfiguration.class})

答案 1 :(得分:0)

如果您正在使用带JPA的MongoDB(我的JPA数据库是mysql),请执行以下操作:

  • 为域对象和存储库(DAO)创建separete包:即demo.mysql.domain,demo.mysql.dao,demo.mongo.domain,demo.mongo.dao
  • 配置类中的
  • 使用以下注释:
    @EntityScan(basePackages={"demo.mysql.domain"})
    @EnableJpaRepositories(basePackages={"demo.mysql.dao"})
    @EnableMongoRepositories(basePackages={"demo.mongo.dao"})
  • 使用@Entity注释您的JPA实体并将它们全部放在demo.mysql.domain包中
  • 使用@Document注释您的MongoDB实体并将它们全部放在demo.mongo.domain包中
  • 将所有MongoDB reporitories保存在demo.mongo.dao包
  • 将所有JPA存储库保存在demo.mysql.dao包
  • 所有mongo存储库都应扩展MongoRepository(即公共接口TransactionRepository扩展MongoRepository)
  • 所有JPA存储库都应扩展JpaRepository(即公共接口CityRepository扩展JpaRepository)

这是迄今为止我发现的最简单,最干净的方法(在通过docs挖掘之后),让MongoDB和Mysql在一个Spring Boot应用程序中运行。

这就是我尝试过的,有效的。您可以使用MongoTemplate或扩展CrudRepository而不是JpaRepository,或者其他任何东西,尝试它,它可能会起作用。