获得;无效的派生查询";STS 3.1中Spring数据JpaRepository接口中到处都是错误

获得;无效的派生查询";STS 3.1中Spring数据JpaRepository接口中到处都是错误,spring,spring-mvc,sts-springsourcetoolsuite,spring-data,spring-data-jpa,Spring,Spring Mvc,Sts Springsourcetoolsuite,Spring Data,Spring Data Jpa,我们完全按照Spring数据文档中的演示实现了我们的存储库。在我们从STS2.9升级到STS3.1之前,一切都很好。所有试图让这些错误消失的尝试都失败了,在某些情况下,它们甚至毫无意义!它们与所使用的接口或实体中的任何属性都不匹配 以下是一个例子: public interface CreditNotesRepository extends JpaRepository<CreditNotes, Long> { CreditNotes findCurrentCreditNot

我们完全按照Spring数据文档中的演示实现了我们的存储库。在我们从STS2.9升级到STS3.1之前,一切都很好。所有试图让这些错误消失的尝试都失败了,在某些情况下,它们甚至毫无意义!它们与所使用的接口或实体中的任何属性都不匹配

以下是一个例子:

public interface CreditNotesRepository extends JpaRepository<CreditNotes, Long> {

    CreditNotes findCurrentCreditNotes(Long shipmentDetailId);
}
我们得到的错误是:

Invalid derived query! No property find found for type ca.cole.freight.model.CreditNotes

虽然这只是一个标志(不影响编译),但它令人恼火和困惑。有人能解释一下吗?然后像我6岁一样向我解释它!;)

我自己也经历过。不幸的是,Spring数据的实现在1.1和1.2之间发生了变化。它不再支持
XML声明。您可以设置自定义后缀,但默认情况下,它需要一个类名为
Impl
的bean。如果它找不到自定义存储库实现,则会出现与所遇到的错误类似的错误。它试图创建方法来根据接口中方法的名称查询对象


另一种方法是将Spring数据版本降低到1.1,并指定
http://www.springframework.org/schema/data/jpa/spring-jpa-1.1.xsd
在您的XML中。

这是一个IDE错误,在下面的帖子中解释:

同时,您可以在preferences/spring/project validators/Data validator中关闭验证,取消选中无效的派生查询,STS将不再抛出标记。

在spring论坛上,spring团队宣布

它已经为STS 3.3.0修复

我还没有检查这个版本。但我使用的是3.5.0.RELEASE,问题又回来了!我的解决办法是取消选中无效的派生查询


这方面也有解决办法。在存储库中的方法定义上添加
@Query
注释,而不定义JPQL/SQL查询

下面是一个例子:

@Query
List<OwnerModel> findByFirstNameAndAgeNotZero(@Param(value = "firstName") String firstName);
@Query
列出FindByFirstName和Genotzero(@Param(value=“firstName”)字符串firstName);
在本例中,将使用名为query
OrderModel.findByFirstNameAndAgeNotZero
。您的Eclipse错误
无效的派生查询
也应该消失,而不需要像@Tuan Dang所描述的那样禁用验证


在Eclipse 4.5.1上检查,安装了Spring插件,用于
@NamedQuery
@namednaviequiry

的问题也出现在STS 3.6.3中。发布问题仍然存在于STS 3.9.1中。问题仍然存在于3.9.4中,它仍然存在于3.9.5中,它仍然存在于3.9.8Pawel Deleba中,java.lang.IllegalArgumentException:查询源字符串不能为null或空。你的解决方案行不通
@Query
List<OwnerModel> findByFirstNameAndAgeNotZero(@Param(value = "firstName") String firstName);