2015-04-28 4 views
2

Кто-нибудь знает, как создать предикат типа даты для Hazelcast? Я использую Predicates.equal("date","value"); Это не работает должным образом. Я передаю существующее значение даты в Hazelcast. Он ничего не возвращает. java.util.date должны быть сопоставимы. Я не знаю, почему он не сравнится должным образом. Любой может помочь, очень ценю!Создать предикат в поле даты для Hazelcast

+0

Возможно, разные временные часы или миллисекунды или что-то еще? Он должен работать так же, как с использованием SQLPredicate. – noctarius

+0

Вы используете его с первым параметром в виде строки с именем атрибута? вы уверены, что сравниваете точно такую ​​же дату? Дата java.util содержит миллисекунды. – MarianP

+0

Я использую его со вторым параметром, как строка на верблюде. Я почти уверен, что сравниваю точно такую ​​же дату. Но Hazelcast, похоже, не сравнивает дату. –

ответ

2

вы также можете попробовать свой собственный предикат. то есть, если у вас есть карта с ключом бытие объекта и значение бытия Дата, то вы можете сделать следующее:

final Date requiredDate = /*your date object*/; 

map.values(new Predicate<Object, Date>() { 

public boolean apply(Entry<Object, Date> arg0) { 

     Date date = arg0.getValue(); 

     if(requiredDate.equals(date)) 
      return true; 
     else 
      return false; 
    } 
}); 

вы можете делать другие формы сравнения внутри метода применения, а также.

+0

Большое спасибо за ответ. Моя структура карты заключается в том, что Object является значением, а случайная строка является ключевой. У объекта есть свойство Date. И я даю поиск свойств в плане DSL в Camel. Проблема в том, что я передаю строку form formate в hazelcast, она не получает согласованного результата. –

+0

Я не уверен, правильно ли я понял вашу установку. объект имеет свойство Date (java.util.Date) и в предикате вы передаете String (java.lang.String) как сопоставимый? –

+0

Да. Это верно. –