首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >findAll UUID MongoRepository

findAll UUID MongoRepository
EN

Stack Overflow用户
提问于 2017-12-28 16:13:46
回答 2查看 1.8K关注 0票数 1

我试着用芒果弹簧引导来实现一个findAllByUUID,但是没有运气.我所拥有的:

代码语言:javascript
复制
public interface CarMatchRepository extends MongoRepository<CarMatchEntity, String> {
    List<CarMatchEntity> findAllByCarID(Iterable<UUID> ids);
    CarMatchEntity findByCarID(UUID carID);
}

函数调用:

代码语言:javascript
复制
public void addCarsToCollection(String id, List<UUID> carId) {
   List<CarMatchEntity> entities = carMatchRepository.findAllByCarID(carId); <--- empty
}

如果我调用findByCarID(),它将正确检索单个对象(如果存在),但是使用Iterable查询不会失败,但它永远不会返回任何对象。我在这里做错了什么吗?还是我在这个问题上走错了路?

谢谢!

编辑:

代码语言:javascript
复制
@Document(collection = "car_index")
public class CarMatchEntity implements Serializable {

    @Id
    private String id;

    private UUID carID;

    //partner data
    private UUID partnerID;
    private String partnerThumbURL;
    private String partnerName;
    private Date partnerMembershipSince;

    // car location
    private List<Double> location;
    private String district;
    private String city;

    // car data
    private CarType carType;
    private String carBrand;
    private String carModel;
    private String carPlate;
    private List<CarFeature> carFeatures;

    private String carAddress;

    private String description;
    private BigDecimal hourFare;
    private BigDecimal dayFare;
    private BigDecimal weekFare;
    private BigDecimal dailyPrice;
    private BigDecimal suggestedHourlyPrice;
    private BigDecimal suggestedDailyPrice;
    private BigDecimal suggestedWeeklyPrice;
    private String carThumbURL;
    private Map<String, CarPhotos> carPhotosURL;
    private CarAvailability availability;
    private CarStatus carStatus;
    private String carYear;
    private FuelType fuelType;

    @Transient
    private DayOfWeek prohibitedDay;

    private String carYearModel;

    @Transient
    private double partnerRating = 5.0;
    private CarTransmission carTransmission;
    private CarColor carColor;
    private String odometer;
    private Integer manufactureYear;
    private String fipeCode;
    private String renavam;
    private String chassi;
    private InsuranceCompany insuranceCompany;
    private List<CarSpecialFeature> carSpecialFeatures;
    private BigDecimal deductible;
    private Boolean superCar;

    public CarMatchEntity() {

    }
EN

回答 2

Stack Overflow用户

发布于 2017-12-28 19:07:50

使用

代码语言:javascript
复制
List<CarMatchEntity> findAllByCarIDIn(Iterable<UUID> ids);

而不是

代码语言:javascript
复制
List<CarMatchEntity> findAllByCarID(Iterable<UUID> ids);

更新:您是否尝试显式声明JPQL查询而不是依赖于Spring生成机制?

代码语言:javascript
复制
@Query("select e from CarMatchEntity e where e.carID in (:ids)")
List<CarMatchEntity> findAllByCarID(@Param("ids") Iterable<UUID> ids);

更新2:我尝试的另一个解决方案是在findAllByCarIDIn方法中声明参数idsCollection<UUID>而不是Iterable<UUID>

票数 1
EN

Stack Overflow用户

发布于 2017-12-28 19:58:33

尝试在SpEL表达式中使用基于JSON的查询

代码语言:javascript
复制
@Query("{carID: { $in: ?0 } })")
List<CarMatchEntity> findAllByCarIds(List<UUID> ids);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48010761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档