powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate, две связи many-to-many, проблема сохранения
5 сообщений из 5, страница 1 из 1
Hibernate, две связи many-to-many, проблема сохранения
    #38296862
eklm86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сущность имеет две связи many-to-many. Таблица связи для обеих коллекций одна и та же.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    @ManyToMany(targetEntity = Company.class, fetch = FetchType.EAGER, cascade={CascadeType.PERSIST, CascadeType.MERGE})
    @JoinTable(name = "payer_customer_company", joinColumns = @JoinColumn(name = "customerid"), inverseJoinColumns = @JoinColumn(name = "companyid"))
    protected Set<Company> companies;






    @ManyToMany(targetEntity = Payer.class, fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
    @JoinTable(name = "payer_customer_company", joinColumns = @JoinColumn(name = "customerid"), inverseJoinColumns = @JoinColumn(name = "payer_id"))
    private Set<Payer> payers;




При сохранении сущности сейчас требуется сохранить вместе с ней только payers, в companies ничего нет.
При сохранении возникает ошибка:
Caused by: org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:94)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:170)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365)
at org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:504)
... 102 more
Caused by: java.sql.BatchUpdateException: ORA-01400: cannot insert NULL into ("payer_customer_company"."companyid")

Раньше на поле companyid был not null констрейнт, но он задизейблен. Может изменение не вступило в силу?
Кроме того, это поле является внешним ключом. Но foreign key не должен препятствовать вставке null-ов.
...
Рейтинг: 0 / 0
Hibernate, две связи many-to-many, проблема сохранения
    #38299391
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Конечно, остается только догадываться, что там происходит, поскольку сам код не приведен, но подозреваю что там не хватает присвоения "с обратной стороны". Покажите код
...
Рейтинг: 0 / 0
Hibernate, две связи many-to-many, проблема сохранения
    #38299848
eklm86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, все нормально с обратной стороны. Обычный INSERT без поля companyid даёт такую же ошибку.
...
Рейтинг: 0 / 0
Hibernate, две связи many-to-many, проблема сохранения
    #38299887
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Покажите java-код, или код с INSERT-ом. Спрашиваете где ошибка, а код не показываете.
Если INSERT в таблицу payer_customer_company, то он однозначно не пройдет.
Дело в том, что ManyToMany подразумевает не только 2 внешних ключа (где null допустимое значение), но и первичный ключ, содержащий оба поля. А в первичном ключе null уже не допускается. Но это опять догадка, что там на самом деле.
...
Рейтинг: 0 / 0
Hibernate, две связи many-to-many, проблема сохранения
    #38299974
eklm86
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точно. Это поле входит в первичный ключ.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate, две связи many-to-many, проблема сохранения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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