2012-04-24 8 views
0

Я звоню местному EJB, который получает мне некоторый список комментариев. Каждый комментарий имеет определенную дату создания. Из этого мне нужно получить последний комментарий. Итак, что я делаю, я проверяю последнее время и затем используйте это время, чтобы получить последний комментарий и отобразить его в UI.EJB дает неправильный вывод

Теперь, тестируя то же самое, сталкиваюсь с проблемой, что в пользовательском интерфейсе она не отображает последний комментарий, а комментирует до последнего комментария в течение некоторого времени.

Для Ex:

Я comment1, comment2, comment3, comment4 создана где comment1 ıA старейшая и comment4 является последним

Теперь, когда я бег моего приложения я получаю comment3 на выходе не comment4, который ожидается, но через некоторое время около часа, когда я запустил приложение снова, я мог видеть comment4.

Кроме того, когда я просматриваю журналы Я на самом деле не получаю comment4 от EJB первоначально Теперь этот EJB также развернут как WebService Когда я запускаю этот WebService в то же время я мог видеть comment4, а

Это проблема с кешем. Я не могу понять, что это вопрос

Пожалуйста, дайте мне знать, если больше деталей требуется

+0

Пожалуйста, предоставьте способ получения последних комментариев, а также код, как вы их сохраняете (если вы их вообще сохраняете). –

ответ

0

, чтобы получить комментарии, которые вы могли бы использовать JPQL, как я полагаю,

SELECT MAX(time) from comments 

таким образом вы может получить последние комментарии с отметкой времени

проверки, если ваш запрос данные правильно ..

+0

См. Ниже логику получения последней даты. Теперь, основываясь на этой дате, я извлекаю последний комментарий private Date getLatestNoteDate (List noteHistory) { Дата tempDate = noteHistory.get (0) .getTimeStamp(); для (AlarmNoteHistoryDTO alarmHistory: noteHistory) { , если (. AlarmHistory.getTimeStamp() после того, как (tempDate)) { tempDate = alarmHistory.getTimeStamp(); } return tempDate; } – Programmer

+0

это правильно, но если список notesHistory очень большой по размеру, тогда рассмотрите также производительность. Получение даты, отфильтрованной с помощью JPQL в самом DTO, будет хорошим с точки зрения производительности, не так ли? – Sanath

+0

У меня есть ограничение, которое я не могу сделать с помощью JPQL – Programmer

0

Пожалуйста, смотрите ниже логики извлечение последняя дата. Теперь, основываясь на этой дате, я извлекаю последний комментарий.

private Date getLatestNoteDate(List<AlarmNoteHistoryDTO> noteHistory) {  
    Date tempDate=noteHistory.get(0).getTimeStamp();  
    for(AlarmNoteHistoryDTO alarmNoteHistory:noteHistory) {   
     if(alarmNoteHistory.getTimeStamp().after(tempDate)) { 
     tempDate=alarmNoteHistory.getTimeStamp(); 
     } 
    return tempDate; 
    }