Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246

OneToMany: Получить many, имея one

25.10.2020, 23:50. Показов 686. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Весь проект: https://github.com/Kifsif/demo

Конкретный класс с Entity: https://github.com/Kifsif/demo... tment.java

Я задал данные. И ожидал, что у каждого экземпляра класса Department будет наполненное поле courses. А там size=0. Я ожидал, что у tmpDpt будет в courses массив из двух элементов. Помогите, пожалуйста, понять, как имея департамент, получить список его курсов.
Миниатюры
OneToMany: Получить many, имея one   OneToMany: Получить many, имея one  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.10.2020, 23:50
Ответы с готовыми решениями:

Получить матрицу М4 имея в наличии М1
Прошу помощи с работой матриц; Задача: получить матрицу М4 имея в наличии М1(вообще в проэкте матрица вида); А именно: (см. рис 1...

Как получить поинтер имея адрес
Пытался сделать так char* p = null; p = p + Convert.ToInt32(adr, 16); но не получается Добавлено через 2 минуты А нет,...

Как можно получить LIB, имея DLL?
Подскажите, пожалуйста, как можно получить LIB, имея DLL? Есть ли такие утилиты, если да, то где их можно найти? Спасибо!

6
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
26.10.2020, 00:55
гугли vladmihalcea и там смотри, как он oneToMany делает
1
349 / 262 / 65
Регистрация: 07.04.2014
Сообщений: 1,603
26.10.2020, 01:43
Во-первых, уберите общение с БД из контроллера отдельный класс бизнес-логики. Контроллер нужен для другого.

Во-вторых, в Вашем коде беда с транзакциями. А, о том, что нижеуказанные интерфейсы, это репозитории, Spring Boot вероятно догадывается сам.
Java
1
2
3
@Repository
@Transactional
public interface DepartmentRepository extends JpaRepository<Department, Integer>
Java
1
2
3
@Repository
@Transactional
public interface CourseRepository extends CrudRepository<Course, Integer>
Если Вы читаете данные в той же транзакции или том же методе, что пишите сохраняйте их, через "корневую" сущность.

Примерно вот так должно заработать:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@Transactional
    public void addData() {
 
        Department dpt0 = new Department("Economics");       
 
        Course c0 = new Course("World economics", dpt0);
        dpt0.addCourse(c0);
        
        
 
        Course c1 = new Course("Marketing", dpt0);
        dpt0.addCourse(c1);     
 
        
        dptRepo.save(dpt0);
 
 
        Department tmpDpt = dptRepo.getOne(1);        
        
    }
И не забудьте выставить:

spring.jpa.hibernate.ddl-auto=update
0
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
26.10.2020, 01:43  [ТС]
xoraxax, я попробовал найти его статьи, но тут мне ребята подсказали заменить в application.properties:

Java
1
spring.jpa.hibernate.ddl-auto=validate
А было у меня:

Java
1
spring.jpa.hibernate.ddl-auto=create-drop
Теперь работает, как ожидалось (см. скриншот). Т.е. курсы наполнились.

Я вообще ничего не понимаю. Это баг или фича?
Миниатюры
OneToMany: Получить many, имея one  
0
349 / 262 / 65
Регистрация: 07.04.2014
Сообщений: 1,603
26.10.2020, 02:04
Цитата Сообщение от Kifsif Посмотреть сообщение
Теперь работает, как ожидалось (см. скриншот). Т.е. курсы наполнились.
Я вообще ничего не понимаю. Это баг или фича?
На самом деле они наполнялись и раньше, если Вы про БД. Я проверял в pgAdmin.

Просто create-drop удаляет всё, включая таблицы после завершения работы. А, validate просто проверяет соответствие структуры БД тому, что описано в моделях. Update в случае несоответствия обновит структуру БД. Это если вкратце. В основном работают на двух последних вариантах.

Скорее всего у Вас просто подтянулись уже существующие данные. Я только что проверил на create-drop (мало-ли... ). Приведённый мной подход работает. Проблема у Вас в транзакциях.
1
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
26.10.2020, 02:08  [ТС]
Цитата Сообщение от Streletz Посмотреть сообщение
Во-первых, уберите общение с БД из контроллера отдельный класс бизнес-логики. Контроллер нужен для другого.
Спасибо. Да, похоже, все так и есть. В гите создал отдельную ветку и вот так исправил:

https://github.com/Kifsif/demo... rvice.java


Вывелось, как и планировалось:
Optional[Department{id=1, name='Economics', courses=[Course{id=1, name='World economics', department=Economics}, Course{id=2, name='Marketing', department=Economics}]}]


Спасибо большое.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
26.10.2020, 02:16
Streletz, @Repository не нужен и так работает
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.10.2020, 02:16
Помогаю со студенческими работами здесь

Как получить часовые значения имея получасовые
Доброго времени суток! Есть таблица получасовых мощностей (см. схему) в MS SQL 2000. Возможно ли с помощью SQL-запроса получить часовые...

необходимо получить результат 6 имея следующие данные
int a; a=3.7+2; как получить 6????

Как получить доступ имея приватный ключ?
Приветствую. Мне нужно подключится к одному серверу по ssh, но имею я только приватный ключ:...

Можно ли восстановить проект, имея код, но не имея файлов проекта
Помогите пожалуйста, как восстановить проект, у меня остался только сам код записанный в ворде, а сами файлы проекта утеряны, в C# плохо...

Как получить ThreadID имея его HANDLE в WinXP ?
В более современных виндах делается элементарно - GetThreadId , а в древнем XP как быть ? :) Добавлено через 2 минуты Да, забыл...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru