[英]Spring MongoRepository#findall: ConverterNotFoundException
[英]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.