powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / JPA сделать update с join
9 сообщений из 9, страница 1 из 1
JPA сделать update с join
    #38201057
Фотография oson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как в JPA можно сделать такой update?
Например изменить статус всех Person, которые работают в определенном City, причем связаны сущности через Street.

То есть нужно сделать update по условию для связанных сущностей.

Что-то вроде
Код: java
1.
UPDATE  Person p SET p.status =  :status WHERE  p.street = city.street AND city = :city;


Как это правильно сделать?
...
Рейтинг: 0 / 0
JPA сделать update с join
    #38201081
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только сегодня делал. Вроде можно через JOIN, но у меня хибер нормально не расчехлил его.
Поэтому более надежный способ:
Код: sql
1.
2.
3.
4.
5.
6.
UPDATE Person p SET p.status = :status
WHERE p IN 
(SELECT p1 FROM Person p1
 INNER JOIN City c
 WHERE p1.street = c.street
 AND c.city = :city)



В Hibernate 3 может не работать если Person использует наследование через PrimaryKeyJoinColumn.
...
Рейтинг: 0 / 0
JPA сделать update с join
    #38201156
Фотография oson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишет

Код: java
1.
2.
Caused by: org.hibernate.exception.GenericJDBCException: Неоднозначное имя столбца "ID"
Ambiguous column name "ID"; SQL statement:



Что это может быть?
...
Рейтинг: 0 / 0
JPA сделать update с join
    #38201165
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oson,
это значит, что нельзя однозначно определить, какой таблицы это поле. нужно уточнить
...
Рейтинг: 0 / 0
JPA сделать update с join
    #38201168
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
osonЧто это может быть?
BlazkowiczВ Hibernate 3 может не работать если Person использует наследование через PrimaryKeyJoinColumn.
https://hibernate.atlassian.net/browse/HHH-1657
...
Рейтинг: 0 / 0
JPA сделать update с join
    #38201172
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oson,
Проще переписать на аналогичный SQL. Или проапргрейдится до Hibernate 4.
...
Рейтинг: 0 / 0
JPA сделать update с join
    #38201212
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я ещё пробовал примерно так
Код: sql
1.
2.
3.
UPDATE  Person p SET p.status =  :status 
JOIN p.city c
WHERE c.city = :city


Для этого ассоциация Person.city должна быть на уровне маппинга.
Но у меня хибер сгенерил полную херную. Хотя, возможно, это связано с оракловым диалектом.
...
Рейтинг: 0 / 0
JPA сделать update с join
    #38201266
Фотография oson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да вроде у меня 4
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.1.9.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>4.1.9.Final</version>
    </dependency>


Правда есть еще
Код: java
1.
2.
3.
4.
5.
<dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
            <version>1.1.0.RELEASE</version>
        </dependency>



И в общем то если не указывать hibernate-core, о ничего не меняется.
Может быть он подтягивает 3 Hibernate.
...
Рейтинг: 0 / 0
JPA сделать update с join
    #38201303
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oson,
Тогда покажи sql, который он сгенерил.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / JPA сделать update с join
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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