Sid*_*aes 9 java spring jpa spring-data spring-boot
我的问题是基于另一篇文章.如何使用本机查询实现相同的功能?本机查询不允许JPQL因此也不允许新实例.
我的POJO.
class Coordinates {
private final BigDecimal latitude
private final BigDecimal longitude
...
}
Run Code Online (Sandbox Code Playgroud)
我的数据库表包含城市边界的坐标,因此有三列:city_name,纬度,经度.每个城市都包含很多(实际上很多)周边坐标,用于在Google地图中构建阴影区域.
我打算在该表上构建一个简单的本机查询,该查询应该返回一个坐标列表.
Sid*_*aes 13
在另一篇文章中找到了答案.基本上,我使用的SqlResultSetMapping一起ConstructorResult(没有其他办法解决)有特别注意上提后的接受的答案评论:您需要将添加@NamedNativeQuery注释所使用的实体interface 和用预先考虑实体的名称.,否则它赢得不行.
例:
@Entity
@Table(name = "grupo_setorial")
@SqlResultSetMapping(
name = "mapeamentoDeQuadrantes",
classes = {
@ConstructorResult(
targetClass = Coordenada.class,
columns = {
@ColumnResult(name = "latitude"),
@ColumnResult(name = "longitude")
}
)
}
)
@NamedNativeQuery(
name = "GrupoCensitario.obterPerimetroDosSetores",
query = "SELECT latitude as latitude, longitude as longitude FROM coordenadas where id_setor IN (:setores)",
resultSetMapping = "mapeamentoDeQuadrantes"
)
public class GrupoCensitario {
Run Code Online (Sandbox Code Playgroud)
这是https://jira.spring.io/browse/DATAJPA-980, 这是一个演示该问题的项目。
@Query(value = "SELECT name AS name, age AS age FROM Person", nativeQuery = true)
List<PersonSummary> findAllProjectedNativeQuery();
Run Code Online (Sandbox Code Playgroud)
它在 Hibernate 5.2.11 附带的 Spring Data JPA 2.0 GA (Kay) 版本中得到修复。
Spring Data 1.10.12 (Ingalls) 和 1.11.8 (Hopper) 也修复了这个问题,但需要在 Hibernate 5.2.11 上运行才能工作。
| 归档时间: |
|
| 查看次数: |
35621 次 |
| 最近记录: |