2015-01-05 6 views
0

У меня есть 3 таблицы: Организация, Автомобиль и VehicleStatus.комплекс SQL запросов к JPQL

Организация (от одного до многих) с транспортным средством. (у организации может быть много транспортных средств). Автомобиль (один для многих) с VehicleStatus (транспортное средство имеет другое состояние, которое мы сохраняем при каждом изменении состояния, VehicleStatus имеет столбец statusDate для хранения, когда было выполнено изменение состояния).

Я хотел бы получить транспортные средства, у которых statusType (column) был BROKEN, и которые принадлежат к организациям, расположенным в NewYork.

VehicleStatus (идентификатор, StatusType, statusDate, Vehicle) Vehicle (идентификатор, организация) организация (идентификатор, город)

Это SQL-запрос:

SELECT * FROM Vehicles V, VehicleStatus VS, Organization O 
where (V.id = VS.Vehicle) AND (V.organisation = O.id) 
and (O.city = "Bordeaux") 
and (VS.statusType = "Broken") 
and (VS.statusDate == (select Max(statusDate) from VehicleStatus groupBy vehicle where vehicle = V.id); 

как я могу конвертировать его в JPQL?

благодаря

+2

Вы должны попробовать что-то по крайней мере. –

ответ

0
You can achieve this with the 

In Vehicle entity you should have the relation as like 

@ManytoOne 
@joinColumns(name="organization_id" , insertable=false, updatable=false) 
private Organization organization; 

and in you should have the relationship to the VehicleStatus entity as below in Vehicle entity 

@OneToMany 
private List<VehicleStatus> vehicleStatuses; 

и ваш запрос должен быть, как этот

List<Vehicle> Vehicles=createQuery("select new Vehicle(required column list) from Vehicle v left join v.organization o left join v.vehicleStatuses vs where vs.status=?1 and o.organizationId=?2") 
.setparameter(1,status) 
.setParameter(2,organizationId) 
.getResultList(); 
+0

проблема в том, что мне нужно выбрать статусы с max statusDate (последнее обновление статуса) – user2627156

+0

@ user2627156 Пожалуйста, обновите свой вопрос, чтобы это стало ясно. – carbontax

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