首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在JpaRepository的查询中执行PostGIS函数

在JpaRepository的查询中执行PostGIS函数
EN

Stack Overflow用户
提问于 2016-11-08 05:14:59
回答 2查看 2.1K关注 0票数 2

我有一个像这样的JpaRepository:

代码语言:javascript
运行
AI代码解释
复制
public interface PipeRepository extends JpaRepository<Pipe, Long> {
    @Query("select p from Pipe p where st_intersects(p.geometry, ?1)=true")
    Collection<Pipe> find(Geometry envelope);

    @Query(value = "SELECT st_extent(p.geometry) FROM Pipe p WHERE p.id IN ?1")
    Geometry getPipe(Collection<Number> id);
}

第一个运行正常,但第二个在初始化期间抛出此异常:

代码语言:javascript
运行
AI代码解释
复制
org.hibernate.QueryException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode
\-[METHOD_CALL] MethodNode: '('
    +-[METHOD_NAME] IdentNode: 'st_extent' {originalText=st_extent}
    \-[EXPR_LIST] SqlNode: 'exprList'
       \-[DOT] DotNode: 'pipe0_.geometry' {propertyName=geometry,dereferenceType=PRIMITIVE,getPropertyPath=geometry,path=p.geometry,tableAlias=pipe0_,className=es.x.model.Pipe,classAlias=p}
          +-[ALIAS_REF] IdentNode: 'pipe0_.id' {alias=p, className=es.x.model.Pipe, tableAlias=pipe0_}
          \-[IDENT] IdentNode: 'geometry' {originalText=geometry}

st_intersects工作的原因和st_extent不工作的原因有什么线索吗?

更新:我认为问题在于Spring不承认PostGIS函数。这个聚合函数(SQL的sum)正确工作:

代码语言:javascript
运行
AI代码解释
复制
@Query("select sum(p.id) from Pipe p where p.id in ?1")
Number getPipesSum(Collection<Number> ids);
EN

回答 2

Stack Overflow用户

发布于 2020-03-04 08:07:43

我有一个类似的问题,并解决了以下问题:

在接口中,可以使用st_astext()作为WKT接收查询结果。

代码语言:javascript
运行
AI代码解释
复制
@Query(value = "SELECT st_astext(st_extent(p.geometry)) FROM Pipe p WHERE p.id IN ?1")
String getPipe(Collection<Number> id);

您将看到返回类型是一个字符串(可能是好的,也可能不是好的)。

一旦您从数据库中取回您的WKT,我就使用org.locationtech.jts.geom.GeometryFactory将其转换回几何。

代码语言:javascript
运行
AI代码解释
复制
@Autowired
private GeometryFactory factory;

WKTReader reader = new WKTReader(factory);
Geometry geom = reader.read(yourReturnVariable);

如果您查看geom.getGeometryType(),您将看到它是一个可行的几何学,然后您可以在其他操作中使用。

正如我之前说过的,这可能不是一个好的解决方案,但它确实有效。

票数 1
EN

Stack Overflow用户

发布于 2016-11-08 05:47:22

可能是因为st_extent函数返回box2d dataType。

查询的结果是

"BOX(x1 y1,x2 y2)",但您可以转换为几何学

SELECT st_extent(p.geometry)::geometry FROM Pipe p WHERE p.id = ?1

或者(为了避免使用:)

SELECT st_geometryFromText(st_astext(st_extent(p.geometry))),<your SRID>) FROM Pipe p WHERE p.id = ?1

我希望它能用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40487881

复制
相关文章
excel里面空白的单元格如何用0去填充
excel里面空白的单元格如何用0去填充 使用定位-空值功能来完成 Excel参考版本:2010 举例演示说明: 1、选择区域 2、F5-空位条件-空值 3、输入0,ctrl+enter 4、完成
学到老
2019/02/13
2.6K0
【说站】Excel如何快速删除空行?WPS删除excel空白行
站长我经常会处理excel文档,之前介绍过Microsoft Office excel文档删除空行的办法,今天介绍WPS Office下面的excel如何删除空白行。
很酷的站长
2022/11/24
3.2K0
【说站】Excel如何快速删除空行?WPS删除excel空白行
数据透视表填充空白单元格(Excel技巧)
建议升级Excel,03版实在不应该再用了,07版漏洞太多。如果你比较怀旧不想升级,那么可以这样操作,
wujunmin
2021/09/07
5.6K0
数据透视表填充空白单元格(Excel技巧)
Excel: 设置动态的二级下拉菜单
文章背景: 在进行数据录入时,为了提高录入效率和规范用户操作,会使用数据验证功能(Data Validation),得到一级菜单和二级菜单,供用户选择输入。本文要讲述的是如何通过offset、match和counta函数,得到动态的二级下拉菜单。
Exploring
2022/09/20
4.9K0
Excel:  设置动态的二级下拉菜单
VBA删除空白行和空白列代码
这是一个学习的代码,做了解析,做为个人保存,学习之用。 'VBA删除空白列 Sub DeleteEmptyRows() Dim LastRow As Long, r As Long LastRow = ActiveSheet.UsedRange.Rows.Count '得到所使用区域的总行数 LastRow = LastRow + ActiveSheet.UsedRange.Row - 1 '使用区域的总行数+所使用区域的开始第1行用-1 For r = LastR
哆哆Excel
2022/10/25
3.3K0
Excel空白单元格填充上一行内容
3、不要进行任何其他操作,直接按顺序输入:①“等于”键 ②“方向键上↑”键,输入成功后选中的第一个控制表格会出现公式。
码客说
2023/04/03
1.5K0
Excel空白单元格填充上一行内容
如何删除word空白页技巧汇总
from:http://office.jb51.net/wordstudy/3629.html from:http://www.yjpdf.com/word/2247.html     在删除Word空白页的时候,有的时候空白页怎么都删除不掉,,遇到这种情况我们应该怎么办呢?Word空白页无法删除大多是下面几种情况: 情况一:在上一页的末尾插入了分页符或分节符 这时,在当前页页首按del删除是无法删除,需要在上一页的末尾,比如最后那个句号那里开始,del删掉后面的内容,相应的空白页就删掉了。 情况二:Wor
用户1177713
2018/02/24
20.1K0
如何删除word空白页技巧汇总
Excel快速插入空白列
如何快速插入空白列呢? 在开始菜单栏选择插入,插入工作表列(即可在左边创建一个新的空白列)
magize
2023/07/28
2700
Excel快速插入空白列
【说站】python如何用函数删除空白
用函数暂时删除空白区域。再次访问并输出变量时,将发现仍有一些空白。若要永久删除空白,需要将删除操作的结果保存为变量。
很酷的站长
2022/11/23
1.1K0
【说站】python如何用函数删除空白
空白代码可以用来当ID 怎么设置空白代码
现如今网络发展迅速,从而诞生各种游戏平台或者是社交软件,想必在网上冲过浪的人都听过空白代码。尤其在打游戏的时候,或者是在qq昵称上都会用来取昵称,设置此代码算是一门技术活,想必各位也在网上搜寻过各种空白代码如何操作的方法吧。
用户8739990
2021/07/16
5.9K0
空白代码可以用来当ID 怎么设置空白代码
Python3 去除 Excel 空白
    Windows 10 下,Python 3.6,使用第三方包 openpyxl。
py3study
2020/01/03
1.6K0
处理Excel,填充空白区域
在企业应用开发中经常是业务人员提供Excel的数据源,而开发人员将Excel数据导入到数据库中,然后在数据库中进行处理。在Excel中为了表示一种层次和所属关系,很多时候会产生很多空白的单元格。比如一个CRM数据,里面有销售团队、销售员和客户数据,销售员属于某个销售团队,客户属于某个具体的销售,于是业务人员会提供这样的数据:
深蓝studyzy
2022/06/16
7330
处理Excel,填充空白区域
你需要的Excel常用函数都在这里!
Excel常用函数包括逻辑函数、数学函数、文本函数、统计函数、日期函数,熟练并运用好函数,能够让复杂的问题简单化,可以做到批处理,加快处理各种统计、计算类工作。
数据STUDIO
2021/06/24
4.1K0
Excel: 对单元格区域中不重复的数字计数
文章背景: 工作中,有时需要计算某一单元区域内不重复数字的个数。可以借助COUNTA和UNIQUE函数完成这一需求。下面介绍两种场景。
Exploring
2023/08/17
2.9K0
Excel:  对单元格区域中不重复的数字计数
【Excel】用公式提取Excel单元格中的汉字
昨天一个前端的朋友找我帮忙用excel提取代码中的汉字(字符串),可算费了劲儿了,他要提取的内容均在单引号中,但问题是没有统一的规律,同一个单元格可能存在多个要提取的内容,而且汉字中间也夹杂其他字符。
数据科学社区
2018/06/11
8.7K0
【说站】python字符串如何添加删除空白
1、添加制表符,使用字符组合\t 。添加换行符,使用字符组合\n。也可以混合使用,如 \t\n。
很酷的站长
2022/11/26
1.8K0
【说站】python字符串如何添加删除空白
解析空白符(空白,制表)分隔的字串
/// <summary> /// 解析空白符(空白,制表)分隔的字串 /// </summary> /// <param name="strs"></param> /// <returns></returns> public static ArrayList GetStringsSepByBlank(string strs) { ArrayList ar=new Ar
用户1075292
2018/01/23
1.8K0
ExcelVBA给所有空白单元格填上0
【问题】不少人做Excel表格时有个习惯,数值为0时该单元格就不填写。但是空白单元格与数据为0的单元格是不同意义的。在进行统计的时候,用透视表或用函数计算有时会出现空白单元格不计数。数据为0的会计算,所以对有些计算是合理的,所以我们要进行统计前要给所有空白单元格填写上0,以防出现以上错误。
哆哆Excel
2022/10/31
7590
Excel常用函数
2、指定单元格求和:输入=sum(),在括号中间按住ctrl连续点击即可选择需要求和的数据
闲花手札
2021/08/24
3.7K0
点击加载更多

相似问题

使用公式删除Excel中的空白

36

删除动态范围中的空白

18

Excel公式跳过空白单元格

11

如何使Excel "IF“公式计算空白单元格为"0"?

20

如何使用公式删除空白单元格?

126
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文