2015-06-01 6 views
0

Я новичок в Hibernate. Отображение между моей таблицей и классом дается следующим образом.Hibernate Максимальное значение для каждой группы

<?xml version='1.0' encoding='UTF-8'?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 
    <class name="com.pathfinder.beans.Location" table="VEHICLE_LOCATIONS"> 
     <id name="rowId" column="position_id"> 
      <generator class="native"></generator> 
     </id> 
     <property name="vehicleId" column="VEHICLE_ID"></property> 
     <property name="latitude" column="LATITUDE"></property> 
     <property name="longitude" column="LONGITUDE"></property> 
     <property name="time" column="TIME"></property> 
     <property name="createdtime" column="CREATEDTIME"></property> 
    </class> 
</hibernate-mapping> 

Теперь мне нужно получить широту, долготу, время для каждого автомобиля с новейшим созданным временем. С запросом SQL, я могу получить его, как

SELECT a.vehicle_id, a.latitude, a.longitude, a.time 
FROM vehicle_locations a 
LEFT JOIN vehicle_locations b ON a.vehicle_id = b.vehicle_id AND a.createdtime < b.createdtime 
WHERE b.position_id IS NULL; 

Но когда я пытаюсь же присоединиться к HQL, он дает ошибку, как

java.lang.IllegalStateException: DOT узел, без левой руки -боковая сторона!

Как я могу получить ожидаемые результаты с помощью спящего режима?

ответ

1

вы можете попробовать ниже HQL

select a.vehicle_id, a.latitude, a.longitude, a.time 
FROM vehicle_locations a 
LEFT JOIN vehicle_locations b with a.vehicle_id = b.vehicle_id AND a.createdtime < b.createdtime 
WHERE b.position_id IS NULL; 
+0

благодаря user3257248, это чистый SQL способ обработки этой проблемы. Есть ли версия для спящего режима для того же? как мы можем заставить спящий режим генерировать один и тот же запрос с использованием Object и его свойств? (без использования реляционных таблиц и его столбцов) –

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