Удаление файла FileRef, а не ссылки на него

На версии jmix 1.5.0 наша команда столкнулась с проблемой того, что при явном удалении сущности FileRef, по пути .jmix/work/filestorage/** файлы не удаляются явно, удаляются ссылки на них, то есть записи в БД. Отсюда и следуют вопрос, как лучше решить эту проблему?

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

Оно и в Cuba c FileDecriptor так было.
Есть интерфейс FileStorage, там есть метод removeFile(FileRef reference)
jmix/jmix-core/core/src/main/java/io/jmix/core/FileStorage.java at master · jmix-framework/jmix (github.com).

Самое простое - это в слушателе при удалении FileRef сразу удалять файлы из хранилища.

В Cuba у бина FileDecriptor еще были методы findOrphanDescriptors() и findOrphanFiles(), которые позволяли найти дескрипоры без файла и файлы находящиеся в хранилище, но не имеющие ссылающегося на них FileDecrriptor.
Соответственно, в Cuba можно было сделать как вариант еще и фоновую задачу для очистки хранилища.
В Jmix вроде нет аналогов этим методам.

2 симпатии