簡體   English   中英

findAll UUID Mongo存儲庫

[英]findAll UUID MongoRepository

我正在嘗試使用mongo-spring-boot來實現findAllByUUID,但是沒有運氣。 我有的:

public interface CarMatchRepository extends MongoRepository<CarMatchEntity, String> {
    List<CarMatchEntity> findAllByCarID(Iterable<UUID> ids);
    CarMatchEntity findByCarID(UUID carID);
}

函數調用:

public void addCarsToCollection(String id, List<UUID> carId) {
   List<CarMatchEntity> entities = carMatchRepository.findAllByCarID(carId); <--- empty
}

如果我調用findByCarID(),它將正確地檢索單個對象(如果存在),但是使用Iterable,查詢不會失敗,但是它永遠不會返回任何對象。 我在這里做錯什么了嗎,還是在這個問題上走錯了路?

謝謝!

編輯:

@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() {

    }

嘗試將基於JSON的查詢與SpEL表達式一起使用

@Query("{carID: { $in: ?0 } })")
List<CarMatchEntity> findAllByCarIds(List<UUID> ids);

采用

List<CarMatchEntity> findAllByCarIDIn(Iterable<UUID> ids);

代替

List<CarMatchEntity> findAllByCarID(Iterable<UUID> ids);

更新 :您是否嘗試顯式聲明JPQL查詢,而不是依賴Spring Data查詢生成機制?

@Query("select e from CarMatchEntity e where e.carID in (:ids)")
List<CarMatchEntity> findAllByCarID(@Param("ids") Iterable<UUID> ids);

更新2:我嘗試的另一種解決方案是在findAllByCarIDIn方法中將參數ids聲明為Collection<UUID>而不是Iterable<UUID>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM