Я хочу сделать собственный SQL-запрос, который объединяет 2 таблицы.hibernate native sql query
Возвращаемое значение должно быть все элементы таблицы округов, которые будут (id, name, district_code, maps), а также счетчик (*) всех объектов, находящихся в округе (поэтому соединение с некоторыми другая таблица).
У меня есть все столбцы района (округ. ) одно поле, которое является Count (). Какой вид запроса я могу использовать, чтобы я мог комфортно его использовать в своем java-коде? Я не могу добавить объект или, потому что счетчик (*) не подходит для него !?
У меня есть класс, район, который выглядит следующим образом:
@XmlRootElement
public class District extends AbstractEntity{
private int id;
private String name;
private int district_code;
@Transient
private int carsQuantity;
public District(){}
@Override
public int getId() {
return id;
}
@Override
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getDistrict_code() {
return district_code;
}
public void setDistrict_code(int district_code) {
this.district_code = district_code;
}
public int getCarsQuantity() {
return carsQuantity;
}
public void setCarsQuantity(int carsQuantity) {
this.carsQuantity = carsQuantity;
}
}
Мой District.hbm.xml
<hibernate-mapping package="at.opendata.entitys">
<class name="District" table="districts">
<id name="id" column="id">
<generator class="increment"/>
</id>
<property name="name"/>
<property name="district_code"/>
</class>
</hibernate-mapping>
EDIT:
Я не могу сделать это с HQL Одер JPQL, потому что мне нужен SUBSELECT в моей FROM CLAUSE.
SELECT d.id, count(*) FROM (SELECT cd.coordinates AS coordinates FROM cars AS c LEFT JOIN cardetail AS cd ON (c.car_id = cd.car_id)) AS c CROSS JOIN districts AS d WHERE ST_CONTAINS(d.coordinates, c.coordinates) GROUP BY id
Спасибо за ваш ответ, но я нужен родной SQL-запрос, потому что я не могу сделать внутренний выбор по моему ЕКУ. Пожалуйста, посмотрите сами: SELECT d.id, name, district_code, count (*) FROM (SELECT cd.координирует AS координаты FROM cars AS c LEFT JOIN cardetail AS cd ON (c.car_id = cd.car_id)) AS c CROSS JOIN district AS d ГДЕ ST_CONTAINS (d.координаты, c.координаты) GROUP BY id – krackmoe
Это ничего не меняет. SQL-запрос по-прежнему будет возвращать список