Spring Data Repository方法名的不明确性

假如Customer类,有address,addressZip字段,其中address是一个类,该类包括zipCode字段。当通过address.zipCode查询customer时,repository中定义方法:

接口方法:

List findByAddressZipCode(ZipCode zipCode);

spring的遍历算法先找是否存在addressZipCode属性,不存在,再通过camel case(驼峰格式)约定从右向左遍历字段,AddressZip,Code未匹配 -> Address, ZipCode匹配。但在属性名冲突时,查询的结果回出错,例如Customer类也有addressZip字段时,结果就不准了。spring通过在方法名中添加underscore(_)解决这种歧义,修改后的接口方法:

List findByAddress_ZipCode(ZipCode zipCode);

根据Key-value查询:

@Query("{ ?0 : ?1 }")

List findByAttributes(String key,String value);

你可能感兴趣的:(Spring Data Repository方法名的不明确性)