powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Хибер при каскадной вставке двух сущностей генерит отдельный запрос на SET FK.
3 сообщений из 3, страница 1 из 1
Хибер при каскадной вставке двух сущностей генерит отдельный запрос на SET FK.
    #39698303
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть такой маппинг таблиц(unidirectional):

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
@Entity
@Table(name = "MY_TEMPLATE")
public class MyTemplate {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID", nullable = false, updatable = false)
    private Long id;
    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
    @JoinColumn(name = "MY_TEMPLATE_ID")
    private List<MyRsc> myRscs = new ArrayList<>();
    ...
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
@Entity
@Table(name = "MY_DAILY_RESOURCE")
public class MyRsc implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID", nullable = false, updatable = false)
    private Long id;
}




Вот таким вот кодом сохраняю в базу родительскую сущность:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
MyTemplate mt = new MyTemplate();
mt.setField1(someVal1);
mt.setField2(someVal2);
mt.setField3(someVal2);

MyRsc mdr = new MyRsc();
mt.getMyRscs.add(mdr);//!!!
mdr.setFfld1(smVal1);
mdr.setFfld2(smVal2);
mdr.setFfld3(smVal3);
crudRepository.save(mt);



Hibernate генерит 3 запроса:

авторinsert into MY_TEMPLATE for field1, field2 anf field3
insert into MY_DAILY_RESOURCE for fld1, fld2 and fld3
update set foreign key for MY_DAILY_RESOURCE table

А можно ли как-то заставить Хибер объединить второй и третий запрос? Чтоб код взлетел пришлось удалять из базы NOT NULL констрейнт на FK, а делать этого не очень то хочется.
...
Рейтинг: 0 / 0
Хибер при каскадной вставке двух сущностей генерит отдельный запрос на SET FK.
    #39698307
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

В мапинге надо указать что ассоциация у тебя Not Null. А то выходит что в базе not null, а в коде - nullable.
...
Рейтинг: 0 / 0
Хибер при каскадной вставке двух сущностей генерит отдельный запрос на SET FK.
    #39698335
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczquestioner,

В мапинге надо указать что ассоциация у тебя Not Null. А то выходит что в базе not null, а в коде - nullable.

Добавил

Код: java
1.
@JoinColumn(name = "MY_TEMPLATE_ID", nullable = false)




помогло!!!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Хибер при каскадной вставке двух сущностей генерит отдельный запрос на SET FK.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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