ModelService в hybris реализует функции, отличные от ожидаемых.Сервис моделей поддерживает:
Создание нового элемента
ProductModel newProduct = modelService.create(ProductModel.class);
Запись изменений в элемент
modelService.save(product);
Удаление элемента
modelSerivce.remove(product);
Обновление элемента при внесении изменений в другом контексте
modelService.refresh(product);
Извлечение данных из базы данных
Если вы хотите изменить существующий элемент, вам нужно сначала получить его из базы данных.Есть несколько возможностей для поиска существующих предметов.Рассмотрим следующие случаи:
Извлечение существующего продукта, пользователя, категории ... Для большинства стандартных элементов hybris есть службы для извлечения. Используйте ProductService, UserService, CategoryService ... Nowиспользуйте ModelService для сохранения изменений, внесенных в эту модель.
ProductModel product = productService.getProductForCode("myEAN");
product.setMyCustomAttribute("ABC");
modelService.save(product);
Редактирование нестандартного элемента / типа элемента без службы, подготовленной Hybris Когда hybris не предоставляет службы для получения элемента из базы данныхВам необходимо внедрить этот сервис самостоятельно.Есть несколько возможностей сделать это.
FlexibleSearchService
Map<String, Object> params = new HashMap<>();
params.put("id", "123");
String query = "SELECT {pk} FROM {MyCustomType} WHERE {id} LIKE ?id";
SearchResult<MyCustomTypeModel> result = flexibleSearchService.search(query, params);
List<MyCustomTypeModel> myCustomTypesWithId = result.getResult();
GenericSearchService
GenericSearchField idField = new GenericSearchField(MyCustomTypeModel._TYPECODE, MyCustomTypeModel.ID);
GenericCondition condition = GenericCondition.createConditionForValueComparison(idField, Operator.EQUAL, "123");
GenericQuery query = new GenericQuery(MyCustomTypeModel._TYPECODE, condition);
SearchResult<MyCustomTypeModel> searchResult = genericSearchService.search(query);
List<MyCustomTypeModel> myCustomTypesWithId = searchResult.getResult();
Это только самые выдающиеся из них.Обратитесь к справочным / вики-страницам hybris за дополнительной информацией.Какой из них вы предпочитаете, зависит от вас.Оба имеют свои преимущества и недостатки.
Рекомендуется обернуть эту функцию доступа к данным в собственные классы.Классы, которые ищут элементы в базе данных, называются DAO (объект доступа к данным).