存储库函数 returns 空列表
Repository function returns empty list
我有这个存储库功能:
public interface CommunityRepository extends MongoRepository<Community,String> {
@Query(value="{ 'builder_id' : 1}", fields="{ 'name' : 1, 'description' : 1, 'slogan' : 1, 'address' : 1, 'numberOfHouses' : 1}")
List<Community> findAllByBuilderId(List<String> builderId);
}
这里是我从服务中调用它的方式:
List<String> builderId = new ArrayList<String>();
builderId.add("6127db1d94ae73194a990444");
builderId.add("5f9852ce93834b1fc01f6573");
builderId.add("602db8e7b05b804313f9ft67");
List<Community> communities = underTest.findAllByBuilderId(builderId);
这里是社区 class:
@Data
@Document("communities")
@Slf4j
public class Community {
@Id
private String id = null;
@NotBlank(message = "Must not be blank")
@Size(max = 50, message = "Max length is 50 characters")
private String name;
@Size(max = 400, message = "Max length is 200 characters")
private String description;
private List<String> tags;
@Field("builder_id")
@Pattern(regexp = "[a-fA-F0-9]{24}", message = "Wrong id format")
private String builderId;
}
社区列表始终为空,但有一些项目与之相关builder id
。
知道为什么社区列表总是空的吗?
您没有在查询中传递参数,您只有静态值 1。
{ 'builder_id' : 1}
表示静态搜索 builder_id = 1
你想要的是
{ 'builder_id' : { $in: ?0 } }
你说的 builder_id 必须是你的方法提供的第一个参数中包含的元素之一(索引从0开始)所以它是 ?0
所以你查询到底一定是
@Query(value="{ 'builder_id' : { $in: ?0 } } )
List<Community> findAllByBuilderId(List<String> builderId);
如果不接受,请尝试 {$in: [?0]}
我有这个存储库功能:
public interface CommunityRepository extends MongoRepository<Community,String> {
@Query(value="{ 'builder_id' : 1}", fields="{ 'name' : 1, 'description' : 1, 'slogan' : 1, 'address' : 1, 'numberOfHouses' : 1}")
List<Community> findAllByBuilderId(List<String> builderId);
}
这里是我从服务中调用它的方式:
List<String> builderId = new ArrayList<String>();
builderId.add("6127db1d94ae73194a990444");
builderId.add("5f9852ce93834b1fc01f6573");
builderId.add("602db8e7b05b804313f9ft67");
List<Community> communities = underTest.findAllByBuilderId(builderId);
这里是社区 class:
@Data
@Document("communities")
@Slf4j
public class Community {
@Id
private String id = null;
@NotBlank(message = "Must not be blank")
@Size(max = 50, message = "Max length is 50 characters")
private String name;
@Size(max = 400, message = "Max length is 200 characters")
private String description;
private List<String> tags;
@Field("builder_id")
@Pattern(regexp = "[a-fA-F0-9]{24}", message = "Wrong id format")
private String builderId;
}
社区列表始终为空,但有一些项目与之相关builder id
。
知道为什么社区列表总是空的吗?
您没有在查询中传递参数,您只有静态值 1。
{ 'builder_id' : 1}
表示静态搜索 builder_id = 1
你想要的是
{ 'builder_id' : { $in: ?0 } }
你说的 builder_id 必须是你的方法提供的第一个参数中包含的元素之一(索引从0开始)所以它是 ?0
所以你查询到底一定是
@Query(value="{ 'builder_id' : { $in: ?0 } } )
List<Community> findAllByBuilderId(List<String> builderId);
如果不接受,请尝试 {$in: [?0]}