Да, единственный вариант - использовать пользовательские свойства / поля Expando AKA. В случае fileEntry вам не нужно создавать таблицы и столбцы программно, но вы можете настроить их в Панели управления> Пользовательские поля.
После этого у вас есть несколько вариантов, как заполнить значения в расширенном формате.
fileEntry.getExpandoBridge().setAttribute("propName", "propValue")
или если вы получаете свойства из слоя представления
<liferay-ui:custom-attributes-available className="<%= DLFileEntry.class.getName() %>">
<liferay-ui:custom-attribute-list
className="<%= DLFileEntry.class.getName() %>"
classPK="<%= (fileVersion != null) ? fileVersion.getFileVersionId() : 0 %>"
editable="<%= true %>"
label="<%= true %>"
/>
</liferay-ui:custom-attributes-available>
, а затем
ServiceContext serviceContext = ServiceContextFactory.getInstance(
DLFileEntry.class.getName(), actionRequest);
serviceContext заполняется параметрами в actionRequest, и вы просто вызываете
fileEntry.getExpandoBridge().setAttributes(serviceContext)
Наконец, вам может потребоваться запросить fileEntries с определенными свойствами
public Hits search() {
Map<String, Serializable> attributes = new HashMap<String, Serializable>();
attributes.put("propertyName", "propertyValue");
SearchContext searchContext = new SearchContext();
searchContext.setAttributes(attributes);
Indexer indexer = IndexerRegistryUtil.getIndexer(FileEntry.class);
return indexer.search(searchContext);
}
Конечно, это решение может показаться немного сложным, потому что Liferay Document Library не является репозиторием содержимого JCR, но буквально это библиотека документов, которая обеспечивает уровень абстракции для конкретных реализаций репо с помощью Hooks, таких как JCRHook (где хранятся файлы). в хранилище jackrabbit), поддержку CMIS, поддержку миграции и т. д. Он также обрабатывает проверку разрешений, проверку файлов, обработку документов и управление активами.
Так что, если вы намереваетесь сделать что-то более сложное, и вам придется запрашивать свойства / метаданные, измените их и разверните их. Вам следует подумать об использовании JCR-репозитория напрямую ...