В моем классе кэш у меня factorDate как Joda DateTime объектаApache воспламенить фильтрации запросов по дате
@QuerySqlField(index = true)
private DateTime factorDate;
Мне нужно, чтобы получить все результаты между 2 датами. Для этого у меня есть следующий код:
CacheConfiguration<Integer, MyClass> cfg = new CacheConfiguration<>("myCache");
cfg.setIndexedTypes(Integer.class, MyClass.class);
IgniteConfiguration ignitionConfig = new IgniteConfiguration();
ignitionConfig.setCacheConfiguration(cfg);
Ignite ignite = Ignition.getOrStart(ignitionConfig);
IgniteCache<Integer, MyClass> cache = ignite.getOrCreateCache(cfg);
DateTime startDateObj = DateTimeFormat.forPattern("dd-MMM-yyyy").parseDateTime(startDate);
DateTime endDateObj = DateTimeFormat.forPattern("dd-MMM-yyyy").parseDateTime(endDate);
Timestamp startTimeStamp = new Timestamp(startDateObj.getMillis());
Timestamp endTimeStamp = new Timestamp(endDateObj.getMillis());
StringBuilder builder = new StringBuilder();
builder.append(" SELECT factorDate, name FROM MyClass ");
builder.append(" WHERE factorDate >= ? AND factorDate <= ? ");
builder.append(" AND name = ? ");
SqlFieldsQuery qry = new SqlFieldsQuery(builder.toString());
qry.setArgs(startTimeStamp, endTimeStamp, "Jack Jones");
List<List<?>> res = cache.query(qry).getAll();
Я не получаю результатов, когда знаю, что есть результаты. Есть идеи?
Я также попытался с помощью DateTime объекта вместо метки в качестве аргумента запроса, но до сих пор не повезло
Можете ли вы подробнее рассказать о второй части, пожалуйста? – Julian
Игнорировать хранит данные в двоичном формате по умолчанию. Он позволяет запускать SQL-запросы без десериализации (поэтому 'Comparable' также игнорируется). Если используется 'OptimizedMarshaller', объекты будут десериализованы на стороне сервера, и эти десериализованные объекты будут использоваться для получения значений полей. –