Здравствуйте,
Я получаю из БД объекты ImapMessage для дальнейшей работы.
При попытке вызова imapAPI.fetchMessage(imapMessage) возникает ошибка:
“Cannot get unfetched attribute [folder] from detached object com.haulmont.addon.imap.entity.ImapMessage-3f6de5cb-4bc1-1ba3-1074-ecc6965ef824 [detached].”
Если этот метод использовать при обработке NewEmailImapEvent ошибки не возникает.
Есть ли какое-то решение?
Здравствуйте @osadchaya.alisa,
Добавьте пожалуйста в эту ветку пример вашего кода, где падает эта ошибка
Для получение списка объектов ImapMessage используется метод:
public List<ImapMessage> getMessagesByDate(Calendar dateFrom, Calendar dateTo) {
if (dateFrom == null) {
dateFrom = Calendar.getInstance();
dateFrom.add(Calendar.DATE, -1);
}
if (dateTo == null) {
dateTo = Calendar.getInstance();
}
List<ImapMessage> messageList = new ArrayList<>();
List<ImapFolder> imapFolders = getFolders(getMailBoxes());
for (ImapFolder imapFolder : imapFolders) {
messageList.addAll(manager.load(ImapMessage.class)
.query("select m from imap$Message m where m.folder.id = :imapFolderId and m.receivedDate between :dateFrom and :dateTo")
.parameter("imapFolderId", imapFolder.getId())
.parameter("dateFrom", dateFrom.getTime())
.parameter("dateTo", dateTo.getTime())
.list());
}
return messageList;
}
Далее этот список передается в метод, где падает ошибка:
public void parseMail(List<ImapMessage> imapMessages, ImapAPI imapAPI, ImapAttachmentsAPI imapAttachmentsAPI) {
for (ImapMessage m : imapMessages) {
ImapMessageDto dtoMessage = imapAPI.fetchMessage(m);
imapAttachmentsAPI.fetchAttachments(m);
}
}
Попробуйте добавить в этот метод view для imap$Message
чтобы объекты грузились вместе с полем folder
Спасибо!
Работает