Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220

Hibernate ManyToOne лишние записи

05.02.2019, 15:33. Показов 1256. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть такие сущности.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
@MappedSuperclass
class Base {
    @Id
    private String id;
}
 
@Entity
class A extends Base {
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "c_id")
    C c;
}
 
@Entity
class B extends Base {
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "c_id")
    C c;
}
 
@Entity
class C {
    
    @Id
    private String id;
    
    @OneToMany(
            cascade = CascadeType.ALL,
            fetch = FetchType.EAGER,
            mappedBy = "c",
            orphanRemoval = true
    )
    private List<A> as = new ArrayList<>();
 
    @OneToMany(
            cascade = CascadeType.ALL,
            fetch = FetchType.EAGER,
            mappedBy = "c",
            orphanRemoval = true
    )
    private Set<B> bs = new HashSet<>();
}
есть JpaRepository repo.
В таблице лежит запись С, для которой есть одна запись А и 10 записей B.
делаю repo.findOne(id) - приезжает объект у которого 10 одинаковых записей А и 10 записей Б.
Как сделать, чтобы приезжал правильный объект?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.02.2019, 15:33
Ответы с готовыми решениями:

ManyToOne in Hibernate
Здравствуйте. Помогите решить проблему... Я питаюсь реализовать связь в своем проект &quot;ManytoOne&quot;. Коротко опишу функционал: есть...

Hibernate, ManyToOne и кривая БД
Суть вопроса такая, есть БД, в которой почти что нет ни одного FK, тем не менее логически связи есть. Так же, как вы уже догадались есть...

Hibernate OneToMany, ManyToOne и тд
Добрый день. В очередной раз переписывая код возник вопрос. А в чем смысл использования, например, аннотации OneToMany для связывания двух...

5
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
05.02.2019, 17:16
xoraxax, как то было такое...это вроде известная особенность хибернейта. Помоему мне помог distinct в запросе
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
06.02.2019, 08:45
Цитата Сообщение от xoraxax Посмотреть сообщение
@OneToMany(
* * * * * * cascade = CascadeType.ALL,
* * * * * * fetch = FetchType.EAGER,
* * * * * * mappedBy = "c",
* * * * * * orphanRemoval = true
* * )
* * private List<A> as = new ArrayList<>(
тебе нужен порядок сущностей A? Если нет, то делай Set. это раз

Добавлено через 11 секунд
два - делается distinct

Добавлено через 1 минуту
Цитата Сообщение от xoraxax Посмотреть сообщение
fetch = FetchType.EAGER
это моветон. ты же вроде уже опытный чел...
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
06.02.2019, 09:32  [ТС]
LeX, я все понимаю, но нужен именно Игорь. Пока просто сохраняю в jsonb, вроде такой вариант всем понравился.
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
06.02.2019, 09:46
Цитата Сообщение от xoraxax Посмотреть сообщение
jsonb,
ты коллекцию так сохраняешь? не айс) сделай дистинкт, делов то.

а по поводу игоря - делай lazy, все равно потом отдельным запросом тянуться будет. и да, если так надо, то entity graph
1
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
06.02.2019, 10:24  [ТС]
Цитата Сообщение от LeX Посмотреть сообщение
entity graph
что-то интересное, почитаю, спс
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.02.2019, 10:24
Помогаю со студенческими работами здесь

[Hibernate] Присваивать id записи исходя из предыдущих записей таблицы
Как сделать так, чтобы Hibernate сам смотрел какой auto-generated id в предыдущей записи таблицы и присваивал на один больше? Сейчас он...

Hibernate ORA-02289: последовательность не существует. Ошибка при добавлении записи в таблицу
Здравствуйте! Есть заполненная вручную таблица employee_history, редактирование и удаление записей таблицы проходит нормально. Но при...

Hibernate Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister
Доброго времени суток. Сталкиваюсь со всякими ошибками при добавлении данных в свою mysql бд. Вот код ошибки Exception in thread...

Java8, Hibernate5, MySQL, IdClass, ManyToOne, EntityExistsException - Halp!
Добрый день! Пытаюсь настроить связь приложения с базой данных, а именно: есть две сущности, связанные между собой как ManyToOne по...

ManyToOne Hibernate Annotation
В общем, нужно создать отношение ManyToOne класса Car к классу Brand Вот класс Car @Entity @SequenceGenerator(name =...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru