我正在尝试创建一个简化的电子商务应用程序。
我使用spring和spring数据以及mongo db。
我的目标是找到可用的产品(即未预订)
为此,我创建了一个空的ItemBooked列表,我在其中设置了所有目录对象。
每次完成订单时,项目将添加到具有相对日期的ItemBooked列表中。
我想使用joda.time.Interval在ItemBooked对象中存储一个间隔但是当我尝试在存储库中使用类似的查询进行查询时 列出findByRange(间隔范围);
返回此错误
java.lang.StackOverflowError
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:54)
at sun.reflect.UnsafeQualifiedByteFieldAccessorImpl.getByte(UnsafeQualifiedByteFieldAccessorImpl.java:46)
at sun.reflect.UnsafeQualifiedByteFieldAccessorImpl.get(UnsafeQualifiedByteFieldAccessorImpl.java:38)
at java.lang.reflect.Field.get(Field.java:379)
at org.springframework.util.ReflectionUtils.getField(ReflectionUtils.java:129)
at org.springframework.data.mapping.model.BeanWrapper.getProperty(BeanWrapper.java:119)
at org.springframework.data.mapping.model.BeanWrapper.getProperty(BeanWrapper.java:96)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter$3.doWithPersistentProperty(MappingMongoConverter.java:422)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter$3.doWithPersistentProperty(MappingMongoConverter.java:415)
at org.springframework.data.mapping.model.BasicPersistentEntity.doWithProperties(BasicPersistentEntity.java:309)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.writeInternal(MappingMongoConverter.java:415)
我猜不支持所以我在ItemBooked中使用了这个ItemBookedRepository的两个日期时间字段
@Component
public interface ItemBookedRepository extends MongoRepository<ItemBooked,
String> {
@Query(value = "{'endDate':{ $gte : ?0 },'startDate':{ $lte : ?1 } }")
List<ItemBooked> findInRange(DateTime startDate, DateTime endDate);
List<ItemBooked> findByItem(Item item);
}