Ответы пользователя по тегу Базы данных
  • Оптимален ли код ниже для данной задачи?

    @vayho
    Category parentCategory = entityManager.find(Category.class, 1);

    Здесь вероятно вместо 1 нужно поставить parentId.

    И ответ на ваш вопрос: вместо ручного инкремента largestIndex вам нужно использовать id последней добавленной записи.

    Кстати раз уж вы используете hibernate то посмотрите в сторону Closure Table, этот паттерн как мне кажется более органично смотрится с hibernate.

    Вот пример кода с id(обязательно обернуть в транзакцию):
    public ResponseMessage addCategory(List<Category> newCategoryList, int parentId) {
        Category parentCategory = parentId == 0 ? null : entityManager.find(Category.class, parentId);
    
        for (Category category : newCategoryList) {
            entityManager.persist(category);
            entityManager.flush();
            if (parentCategory != null) {
                category.setPath(parentCategory.getPath() + "." + category.getId());
                category.setParent(parentCategory);
            } else {
                category.setPath(String.valueOf(category.getId()));
            }
        }
        return new ResponseMessage(true, " ");
    }
    Ответ написан
    8 комментариев