2014-01-06 4 views
5

У меня есть запрос mySql и его нужно передать в спящий запрос. Я передал простые запросы в спящий режим. Но мне трудно конвертировать запрос «UPDATE». Ниже представлен запрос MySql,Как обновить несколько таблиц в спящем режиме?

StringBuilder query = new StringBuilder(); 
query.append("UPDATE bus_transport.trip_calendar a ,"); 
query.append("bus_transport.trip_resource_allocator b,"); 
query.append("bus_transport.vehicle_calendar c ,"); 
query.append("bus_transport.driver_calendar d "); 

query.append("SET c.vehicle_status_code='Available',"); 
query.append("a.route_code='" + jsonObjInside.getString("rCode") + "',"); 
query.append("a.trip_from_date_time='" + finalStartDateTime + "',"); 
query.append("a.trip_to_date_time='" + finalEndDateTime + "',"); 
query.append("b.emp_id='" + jsonObjInside.getString("driverId") + "' ,"); 
query.append("b.vehicle_id='" + jsonObjInside.getString("vehId") + "',"); 
query.append("c.vehicle_id='" + jsonObjInside.getString("vehId")+ "' ,"); 
query.append("d.emp_id='" + jsonObjInside.getString("driverId") + "'"); 

query.append("where a.trip_id='" + jsonObjInside.getString("tripId")+ "'"); 
query.append(" and b.trip_id='" + jsonObjInside.getString("tripId") + "'"); 
query.append("and c.trip_id='" + jsonObjInside.getString("tripId")+ "'"); 
query.append("and d.trip_id='" + jsonObjInside.getString("tripId")+ "' "); 

int var = stmt.executeUpdate(query);  

Пожалуйста, помогите мне преобразовать в запрос на спящий режим.

Заранее спасибо.

+0

Я думаю, что вы можете достичь этой процедуры обновления многократного 'update' заявление, в то же время, что вам нужно убедитесь, что этот оператор обновления находится в одной транзакции! – Rugal

ответ

5

Преобразование инструкции обновления в HQL было бы очень похоже на преобразование любой инструкции SQL в HQL. Предполагая, что вы правильно настроили отображение объектов, вам просто нужно написать правильный HQL QUERY. Вам нужно будет использовать синтаксис HQL (HQL Docs). Вы заменяете имена таблиц & именами, которые вы создали.

Это:

UPDATE bus_transport.trip_calendar a , bus_transport.trip_resource_allocator b, 
bus_transport.vehicle_calendar c , bus_transport.driver_calendar d " 

может прийти что-то вроде этого:

UPDATE TripCalendar a , TripResourceAllocator b, 
VehicleCalendar c , DriverCalendar d " 

Вы ссылаетесь столбцы аналогичным образом

Это:

SET c.vehicle_status_code='Available' 

может стать что-нибудь г, как это:

SET c.vehicleStatusCode = 'Available' 

Более подробной информации о конкретных вещах Hiberate DML проверить эту ссылку: HQL DML Docs

+0

Листинг нескольких объектов после UPDATE на самом деле невозможно. – laurent

+0

Вы не можете перечислить несколько таблиц в UPDATE из спящего режима. вам нужно использовать что-то еще –

Смежные вопросы