powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Eclipselink обновляет PK в таблице чайдлов
9 сообщений из 9, страница 1 из 1
Eclipselink обновляет PK в таблице чайдлов
    #39253705
ASavin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Есть две сущности
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
@Entity
@Table(uniqueConstraints
        = @UniqueConstraint(columnNames = {"menuName"}))
public class Menu implements Serializable, Comparable<Menu> {

    @Id
    @SequenceGenerator(name = "menu_sq", initialValue = 3, allocationSize = 1)
    @GeneratedValue(generator = "menu_sq")
    private Long menu_id;
    private String menuName;
    private Boolean activeStatus = true;
    @OneToMany(cascade = {CascadeType.PERSIST,CascadeType.REMOVE}, mappedBy = "menu")
    @PrivateOwned
    private List<MenuItem> menuItems = new ArrayList<>();

    //setters getters
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
@Entity
@Table(uniqueConstraints
        = @UniqueConstraint(columnNames = {"menuItem","menu_id"}))
public class MenuItem implements Serializable, Comparable<MenuItem> {

    @Id
    @SequenceGenerator(name = "menuItem_sq", initialValue = 10, allocationSize = 1)
    @GeneratedValue(generator = "menuItem_sq", strategy = GenerationType.SEQUENCE)
    private Long menuItem_id;
    private String menuItem;
    private Short line_num;
    private Long view_id;
    @ManyToOne
    @JoinColumn(name = "MENU_ID")
    private Menu menu;

//setters getters
}




1. В существующий Menu в menuItems добавляю первый MenuItem и делаю merge все ок.
В таблице menuitem появляется запись, как бы все ок.
2. Добавляю следом второй menuItem и делаю merge - проблема. Ругается на констрейнт columnNames = {"menuItem","menu_id"}.
3. Удаляю констрейнт и повторяю пункты 1 и 2. Все ок. База наполняется. Но есть один момент - после каждого добавления menuItem обновляются PK всех раннее (за ViewScoped) добавленных строк! Т.е. получается Eclipselink каждый раз после merge инсертит заново все ранее добавленные menuItem и удаляет старые?
...
Рейтинг: 0 / 0
Eclipselink обновляет PK в таблице чайдлов
    #39253715
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASavin 2. и делаю merge
Почему merge?
...
Рейтинг: 0 / 0
Eclipselink обновляет PK в таблице чайдлов
    #39253719
ASavin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я же добавляю новый menuitem в существующий menu
...
Рейтинг: 0 / 0
Eclipselink обновляет PK в таблице чайдлов
    #39253728
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASavinЯ же добавляю новый menuitem в существующий menu
Ну, это не объяснение. Попробуйте не использовать merge.
...
Рейтинг: 0 / 0
Eclipselink обновляет PK в таблице чайдлов
    #39253746
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASavin,

Простите, попутал, это же JPA merge, а не Hibernate.
...
Рейтинг: 0 / 0
Eclipselink обновляет PK в таблице чайдлов
    #39253754
ASavin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я хочу немного больше объяснить. Все эти операции я делаю с JSF страницы. Добавление menuItem делается вызовом метода бина.
Так вот, я написал тест данного метода и результат тот что надо, нет проблем ни с констрейнтом, ни с PK чайдлов.
...
Рейтинг: 0 / 0
Eclipselink обновляет PK в таблице чайдлов
    #39253759
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASavin,

А в MenuItem после каждого merge появляются ID? Или остаются null?
...
Рейтинг: 0 / 0
Eclipselink обновляет PK в таблице чайдлов
    #39253763
ASavin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
появляются
...
Рейтинг: 0 / 0
Eclipselink обновляет PK в таблице чайдлов
    #39253951
ASavin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил проблему. Ушел от merge Menu к persist MenuItem. Так работает как надо. Но почему изначально не работало так и не понятно.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Eclipselink обновляет PK в таблице чайдлов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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