Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
3 / 3 / 14
Регистрация: 26.01.2016
Сообщений: 481
1

Возможно ли сохранять данные разных репозиториев используя CrudRepository?

31.03.2017, 10:42. Показов 621. Ответов 6
Метки нет (Все метки)

Вопрос находится в такой плоскости.

Клиент делает покупку на сайте. На сайте не одна БД, из которой клиент может купить товар. Покупка попадает в "определитель" из какой БД следует уменьшить кол-во товара, case или if(else if), но вся суть кода сводится к тому, что бы взять кол-во товара из БД и отнять от него заказанное кол-во и вот это пытаюсь реализовать одним кодом:
Java
1
2
3
4
5
6
7
8
9
10
11
12
       if(split[1].contains(clothFabric)) {
           List<ClothFabricModel> clothFabricModels = clothFabricRepository.findById(id);
            ClothFabricModel model = clothFabricModels.get(0);
           Double quantityInDB = model.getQuantity(); 
           checkInfo(clothFabricRepository, modelToSend, quantityInDB, quantityFromUI);
 
       } else if (split[1].contains(curtainFabric)){
           List<CurtainModel> listModel = curtainRepository.findById(id);
           CurtainModel model = listModel.get(0);
           Double quantityInDB = model.getQuantity();
           checkInfo(curtainRepository, model, quantityInDB, quantityFromUI);
           }
вот так пробую реализовать одинаковую часть:
Java
1
2
3
4
5
6
7
8
9
10
 public void checkInfo(CrudRepository repositories, AllFabricModel model, Double quantityInDB, Double quantityFromUI){
        if (quantityInDB <= 0) {
            System.out.println("In DB ZERO");
        } else {
 
            Double result = quantityInDB - quantityFromUI;
            model.setQuantity(result);
            repositories.save(model);
        }
    }
Ошибки нет, но вот только никакие изменения не сохраняются в БД.
Все репозитории наследуют CrudRepository
Java
1
2
@Repository
public interface CurtainRepository extends CrudRepository<CurtainModel, Long>{
Тут ответа не нашел
https://docs.spring.io/spring-data/data-commons/
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.03.2017, 10:42
Ответы с готовыми решениями:

Возможно ли в консольном приложении сохранять данные, заполненные пользователем?
Возник вопрос, есть ли возможность в консольном приложении сохранять данные заполненные...

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

Как вычислять в поле таблицы используя данные из разных таблиц?
Народ, всем привет! Вопрос: Есть Таблица 1 в ней есть поле с датой . Есть Таблица 2 с числовым...

Возможно ли используя Criteria выбрать данные из связанных таблиц одним запросом?
Здравстуйте! Проект использует Symfony 3, Doctrine 2. Есть таблица объявлений и таблица...

6
183 / 110 / 44
Регистрация: 03.07.2016
Сообщений: 496
31.03.2017, 12:55 2
Ну ты и каши наварил. Интересно, зачем тебе куча разных баз даных? Ведь к каждой нужны свои настройки JPA. А сомтря на твой код я сомневаюсь что они разные. Может ты имеешь ввиду таблицы????
Плюс я не вижу что твои методы выполняются в рамках транзаакции.
0
3 / 3 / 14
Регистрация: 26.01.2016
Сообщений: 481
31.03.2017, 13:00  [ТС] 3
100% верное замечание таблицы, не БД извиняюсь за неверную терминологию.
На ск-ко я знаю @Transaction ставится перед модификатором, а не внутри, поэтому Вы и не видите.
0
183 / 110 / 44
Регистрация: 03.07.2016
Сообщений: 496
31.03.2017, 16:28 4
Если в методе public void checkInfo(...) AllFabricModel model, это класс реализующий определённою таблицу то model.setQuantity(result) должно незамедлитильно послать update в БД. Но вы говорите что этого ен происходит, как по мне:
1. public void checkInfo не в рамках транзаакции.
2. Почему в одном случае вызываете метод с modelToSend а в другом model?? modelToSend я не вижу что такое это.
Java
1
2
checkInfo(clothFabricRepository, modelToSend, quantityInDB, quantityFromUI);
checkInfo(curtainRepository, model, quantityInDB, quantityFromUI);
3. Метод где вы ищете нужную таблицу тоже должен быть обрамлён транзаакцией.

И всё же самый верный способ провереть это отдебажить метод checkInfo, посмотрите что не в него приходит
1
3 / 3 / 14
Регистрация: 26.01.2016
Сообщений: 481
31.03.2017, 17:39  [ТС] 5
@Transaction добавил и работает, но могли бы Вы подсказать почему его и тут нужно было поставить, если у меня в главном модификаторе присутствует?
0
183 / 110 / 44
Регистрация: 03.07.2016
Сообщений: 496
31.03.2017, 17:55 6
Не понимаю что ты имеешь ввиду под главным модификатором. А про транзакции тут написано
http://akorsa.ru/2016/08/kak-n... al-spring/
0
525 / 261 / 69
Регистрация: 11.12.2016
Сообщений: 1,223
16.07.2018, 00:26 7
Borsche,
Я уже находил эту стятью, а еще кучу других примеров, а так как они разные то я никак не могу подвести общий знаменатель (( в частности, надо использовать EntityManager (использовать persist, merge внутри transactional) если я хочу с помощью hibernate в @transactional иметь доступ к БД?
Здесь тоже написано "две концепции, но свои области действия". Они паралельные, заменяемые или нет?
Также написано что при новой трансакции создается новый EntityManager, тогда при каждом запросе я могу просто создавать новую трансакцию и работать с уже привычными save(), load().. типа так
Java
1
2
3
session.beginTransaction();
session.save(student);
session.getTransaction().commit();
В чем подвох? нахожу примеры как с EntityManager так и без?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.07.2018, 00:26

Необходимо вводить данные в форму и сохранять данные в таблице базы данных
Подскажите пожалуйста новичку в деле программирования!Создаю базу данных в 2000 Access.Сохраняю...

Возможно ли в типизированный файл сохранять другие файлы?
Подскажите, возможно ли в типизированный файл сохранять другие файлы? Я пробовал в record добавить...

Возможно ли сохранять атрибуты файла при передачи через интернет?
Здравствуйте. Подскажите пожалуйста, возможно ли как-то обеспечить сохранение атрибутов файла (в...

VS 2010 Express, как сохранять код разных версий моей программы
Есть проект в VS 2010 Express. Я хочу внести изменения в код моей программы, но при этом сохранить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.