Spring Data MongoDB CrudRepository枚举查询报错求助
问题原因与解决方案
你的问题出在Repository方法命名的语法错误上——方法名里多了一个多余的By,导致Spring Data无法正确解析属性路径。
错误根源
你定义的方法名是:
findTop100ByDataTypeByOrderByDateDesc
Spring Data的方法命名规则中,By是用来分隔查询条件和排序规则的关键字,这里连续出现两个By,会让框架把ByDataTypeBy当成一个要查询的属性名,而你的MainData实体里根本没有这个属性,自然抛出PropertyReferenceException。
正确的方法命名
只需要去掉中间多余的那个By,正确的方法签名应该是:
public Page<MainData> findTop100ByDataTypeOrderByDateDesc(DataType dataType, Pageable pageable);
额外说明
关于参数顺序:Spring Data其实支持参数顺序不匹配的情况(只要参数类型能对应上),但按照规范,建议把Pageable参数放在方法的最后一位,这样代码可读性更好,也符合Spring Data的最佳实践。
另外,确认你的DataType枚举在MongoDB中是正确映射的——默认情况下Spring Data MongoDB会把枚举值存储为字符串(比如value1),只要你的查询参数和存储的枚举值一致,就能正常匹配。
内容的提问来源于stack exchange,提问作者Narges
相关产品推荐
相关产品推荐

