Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JPA сделать update с join / 9 сообщений из 9, страница 1 из 1
27.03.2013, 18:17:23
    #38201057
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPA сделать update с join
Как в 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
27.03.2013, 18:29:02
    #38201081
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPA сделать update с join
Только сегодня делал. Вроде можно через 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
27.03.2013, 19:07:56
    #38201156
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPA сделать update с join
Пишет

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



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


Для этого ассоциация Person.city должна быть на уровне маппинга.
Но у меня хибер сгенерил полную херную. Хотя, возможно, это связано с оракловым диалектом.
...
Рейтинг: 0 / 0
27.03.2013, 20:08:22
    #38201266
oson
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPA сделать update с join
Да вроде у меня 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
27.03.2013, 20:46:45
    #38201303
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JPA сделать update с join
oson,
Тогда покажи sql, который он сгенерил.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JPA сделать update с join / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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