ske*_*625 22 spring spring-mvc sts-springsourcetoolsuite spring-data spring-data-jpa
我们完全按照Spring Data文档中的说明实现了我们的存储库.一切都很好,直到我们从STS 2.9升级到STS 3.1.所有使这些错误消失的尝试都失败了,在某些情况下它们甚至没有意义!它们与界面或使用的实体中的任何属性都不匹配!
这是一个例子:
public interface CreditNotesRepository extends JpaRepository<CreditNotes, Long> {
CreditNotes findCurrentCreditNotes(Long shipmentDetailId);
}
Run Code Online (Sandbox Code Playgroud)
这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)")
})
Run Code Online (Sandbox Code Playgroud)
我们得到的错误:
Invalid derived query! No property find found for type ca.cole.freight.model.CreditNotes
Run Code Online (Sandbox Code Playgroud)
虽然这只是一个标志(不影响编译),但令人讨厌并且令人困惑.任何人都可以对此有所了解吗?并向我解释,就像我6岁!;)
Paw*_*ęba 13
还有解决方法.@Query在您的存储库中的方法定义中添加注释,而不定义JPQL/SQL查询.
这是一个例子:
@Query
List<OwnerModel> findByFirstNameAndAgeNotZero(@Param(value = "firstName") String firstName);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,OrderModel.findByFirstNameAndAgeNotZero将使用命名查询.您的Eclipse错误Invalid derived query也应该消失,而不需要像@Tuan Dang所描述的那样禁用验证
检查Eclipse 4.5.1并安装了Spring插件@NamedQuery和@NamedNativeQuery.
| 归档时间: |
|
| 查看次数: |
29878 次 |
| 最近记录: |