Java findAll UUID MongoRepository
我正在尝试使用mongo spring boot获得FindallByuid,但运气不好。 我所拥有的:Java findAll UUID MongoRepository,java,spring,mongodb,spring-mongo,spring-mongodb,Java,Spring,Mongodb,Spring Mongo,Spring Mongodb,我正在尝试使用mongo spring boot获得FindallByuid,但运气不好。 我所拥有的: public interface CarMatchRepository extends MongoRepository<CarMatchEntity, String> { List<CarMatchEntity> findAllByCarID(Iterable<UUID> ids); CarMatchEntity findByCarID(U
public interface CarMatchRepository extends MongoRepository<CarMatchEntity, String> {
List<CarMatchEntity> findAllByCarID(Iterable<UUID> ids);
CarMatchEntity findByCarID(UUID carID);
}
公共接口存储库扩展了MongoRepository{
列出FindAllByCard(可编辑ID);
卡马查德(UUID carID);
}
函数调用:
public void addCarsToCollection(String id, List<UUID> carId) {
List<CarMatchEntity> entities = carMatchRepository.findAllByCarID(carId); <--- empty
}
public void addCarsToCollection(字符串id,列表id){
List entities=carMatchRepository.findallbycand(carId);使用
列出findAllByCarIDIn(Iterable id);
而不是
List<CarMatchEntity> findAllByCarID(Iterable<UUID> ids);
列出findallbycard(可编辑的ID);
更新:
您是否尝试显式声明JPQL查询而不是依赖Spring数据查询生成机制
@Query("select e from CarMatchEntity e where e.carID in (:ids)")
List<CarMatchEntity> findAllByCarID(@Param("ids") Iterable<UUID> ids);
@Query(“从carmatch实体e中选择e,其中e.carID位于(:id)”)
列出FindAllByCard(@Param(“ids”)可编辑ID);
更新2:
我尝试的另一个解决方案是将findAllByCarIDIn
方法中的参数ids
声明为Collection
,而不是Iterable
尝试使用基于JSON的查询和SpEL表达式
@Query("{carID: { $in: ?0 } })")
List<CarMatchEntity> findAllByCarIds(List<UUID> ids);
@Query({carID:{$in:?0}})”
列出findAllByCarIds(列表ID);
你能粘贴CarMatchEntity
的字段吗?当然!现在我得到:init方法调用失败;嵌套异常是com.mongodb.util.JSONParseException:从CarMatchEntity e中选择e,其中e.carID在(:id)中
。感谢您迄今为止的帮助!我是否应该使用导入org.springframework.data.mongodb.repository.Query;
?@Leonardo忽略我的“更新1”,我输入了Mongo和JPQL格式。正确的格式在这里。您可以直接在Mongo集合中搜索UUID吗?@Leonardo您的MongoDB中的carID是什么类型的?是的,我可以!我有CarMatchEntity FindBycard(UUID carID);
返回结果。二进制、旧UUID或BinData(3,Base64)。感谢您的帮助
@Query("select e from CarMatchEntity e where e.carID in (:ids)")
List<CarMatchEntity> findAllByCarID(@Param("ids") Iterable<UUID> ids);
@Query("{carID: { $in: ?0 } })")
List<CarMatchEntity> findAllByCarIds(List<UUID> ids);