powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / hibernate child parent
5 сообщений из 5, страница 1 из 1
hibernate child parent
    #39217018
TepKuH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть две сущности (упрощёны для понимания)
Код: 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.
@Entity
public class EventEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(name = "title")
    private String title;

    @OneToMany(fetch = FetchType.EAGER)
    @JoinColumn(name="event_id")
    private Set<EventLectureEntity> eventLecture;
}

@Entity
public class EventLectureEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(name = "event_id")
    private Integer eventId;

   @Column(name = "description")
    private String desc;
}





Вполне очевидно и понятно, что если я заполню поля id, title и НЕ заполню поле eventLecture у сущности EventEntity и потом скажу merge\updateу меня случится апдейт всех child'ов т.е. И в поле event_id проставляться NULL.

Мой вопрос в следующем:
Можно ли какими либо аннотациями(или еще какими то способами) запретить обновлять связанную сущность EventLectureEntity , но разрешить INSERT'ить и SELECT'ить?
...
Рейтинг: 0 / 0
hibernate child parent
    #39217046
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TepKuH,
из декларативного принуждения ничего не память приходит, но можно отлавливать в сущности событие
beforeUpdate и абортироваться в нем
...
Рейтинг: 0 / 0
hibernate child parent
    #39217349
TepKuH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне тоже умного ничего не приходит. Кроме как:
- В контроллер приходит сущность EventEntity с рядом не заполненных полей.
- Контроллер дальше прокидывает в сервис, который вытаскивает из базы по ID эту EventEntity
- Котроллер обновляет поля сущности которую он вытащил и обновляет поля которые не NULL.

Но проблема в том, что у меня у этой сущность EventEntity около 40 полей. (это так и должно быть, большинство полей текстовые) и только штук 10 связаны со простыми справочниками.
Это так и устать можно заполнять поля :) А разработчики люди ленивые :)
...
Рейтинг: 0 / 0
hibernate child parent
    #39217422
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TepKuH,
самый простой ну и самый наверное расточительный это отиметь EventLectureEntity через interceptor или что там еще есть
preupdateeventlistener и пробрасывать в штатном режиме EventLectureEntity объекты на обновление , а так как реализация будет возвращать false обновления не должно быть..
...
Рейтинг: 0 / 0
hibernate child parent
    #39218131
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1) поле EventLectureEntity.eventId - лишнее. Всё, что нужно, уже описано в аннотации
Код: java
1.
@JoinColumn(name="event_id")


2) в аннотации @ManyToOne следует использовать атрибут "cascade", либо хибернейтовский @Cascade
Код: java
1.
@OneToMany(cascade=CascadeType.PERSIST)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / hibernate child parent
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]