24

我们已经完全按照 Spring Data 文档中的演示实现了我们的存储库。在我们从 STS 2.9 升级到 STS 3.1 之前,一切都很好。所有试图让这些错误消失的尝试都失败了,在某些情况下甚至没有意义!它们与界面或使用的实体中的任何属性都不匹配!

这是一个例子:

public interface CreditNotesRepository extends JpaRepository<CreditNotes, Long> {

    CreditNotes findCurrentCreditNotes(Long shipmentDetailId);
}

findCurrentCreditNotes是我们实体中的命名查询。这段代码执行得非常好。

@NamedQueries({
    @NamedQuery(name = "CreditNotes.getCount", query = "SELECT COUNT(f) FROM CreditNotes f"),
    @NamedQuery(name = "CreditNotes.findCurrentCreditNotes", query =
        "SELECT creditNotes FROM CreditNotes creditNotes"
        + " WHERE creditNotes.shipmentDetail.shipmentDetailId = ?1 "
        + " AND creditNotes.notesSeqNumber =  (SELECT max(creditNotes2.notesSeqNumber) FROM CreditNotes creditNotes2"
        + " WHERE creditNotes.shipmentDetail.shipmentDetailId = creditNotes2.shipmentDetail.shipmentDetailId)")
})

我们得到的错误是:

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

虽然这只是一个标志(不影响编译),但它很烦人且令人困惑。任何人都可以对此有所了解吗?像我6岁一样向我解释!;)

4

4 回答 4

33

在 Spring 论坛的帖子中,Spring Team 宣布

它已经为 STS 3.3.0 修复

我还没有检查这个版本。但我正在使用 3.5.0.RELEASE 问题又回来了!我的解决方法是取消选中Invalid Derived Query

无效的派生查询

于 2014-04-16T16:39:07.420 回答
26

这是以下帖子中解释的 IDE 错误:

http://forum.springsource.org/showthread.php?138585-Invalid-derived-query!-No-property-delete-found-for-type-java-lang-Object

同时,您可以在首选项/弹簧/项目验证器/数据验证器中关闭验证, 取消选中无效派生查询,STS 不会再抛出标记。

于 2013-08-28T19:58:55.987 回答
15

也有解决方法。@Query在未定义 JPQL/SQL 查询的情况下,在您的存储库中为您的方法定义添加注释。

这是示例:

@Query
List<OwnerModel> findByFirstNameAndAgeNotZero(@Param(value = "firstName") String firstName);

OrderModel.findByFirstNameAndAgeNotZero在这种情况下,将使用命名查询。您的 Eclipse 错误Invalid derived query也应该消失,而无需禁用验证,如@Tuan Dang 所述

在 Eclipse 4.5.1 上检查了安装了 Spring 插件的@NamedQuery@NamedNativeQuery.

于 2016-02-01T11:56:19.200 回答
0

我自己刚刚经历过这个。不幸的是,Spring Data 的实现在 1.1 和 1.2 之间发生了变化。它不再支持<repository>XML 声明。您可以设置自定义后缀,但默认情况下,它需要一个 class name 的 bean <InterfaceName>Impl。如果它找不到自定义存储库实现,您就会开始遇到与您遇到的错误类似的错误。它试图创建方法来根据界面中的方法名称查询对象。

另一种方法是将 Spring Data 版本降到 1.1 并http://www.springframework.org/schema/data/jpa/spring-jpa-1.1.xsd在 XML 中指定模式位置。

于 2013-01-03T02:20:39.590 回答