Java 带JPA/Hibernate和PostgreSQL的Spring(启动)-对日期使用重叠
所以我有一个项目,我们使用springBoot和PostgreSQL 10以及PostGis和hibernate.spatial进行空间查询。到目前为止一切正常 一个新的要求是查找实体,这些实体的开始-结束日期以任何可能的方式与查询的开始-结束日期重叠(范围可能是封闭的、开始-重叠的、中间的、结束-重叠的) 在PostgreSQL中,操作员似乎非常适合这项工作 当我试图在JPA查询中使用它来查询这样的实体“某物”时Java 带JPA/Hibernate和PostgreSQL的Spring(启动)-对日期使用重叠,java,postgresql,hibernate,postgis,hibernate-spatial,Java,Postgresql,Hibernate,Postgis,Hibernate Spatial,所以我有一个项目,我们使用springBoot和PostgreSQL 10以及PostGis和hibernate.spatial进行空间查询。到目前为止一切正常 一个新的要求是查找实体,这些实体的开始-结束日期以任何可能的方式与查询的开始-结束日期重叠(范围可能是封闭的、开始-重叠的、中间的、结束-重叠的) 在PostgreSQL中,操作员似乎非常适合这项工作 当我试图在JPA查询中使用它来查询这样的实体“某物”时 select sth from Sth sth where 1=1 and (s
select sth from Sth sth where 1=1 and (sth.start, sth.end) overlaps (:begin, :end)
// set begin and end params..
我得到一个
antlr.NoViableAltException: unexpected token: overlaps
antlr.NoViableAltException: unexpected AST node: (
org.postgresql.util.PSQLException: FEHLER: rt_raster_from_wkb: wkb size (5) < min size (61)
antlr.noviablealException:意外标记:重叠
antlr.NoViableAltException:意外的AST节点:(
org.postgresql.util.psqleexception:FEHLER:rt_光栅_from_wkb:wkb大小(5)<最小大小(61)
是否可以在不编写本机查询的情况下使用JPA的日期重叠?因此,似乎需要做三件事才能使其正常工作
overlaps(start1,end1,start2,end2)
并将其指定为您的
spring.jpa.properties.hibernate.dialogue
(或spring.jpa.database platform
),因此,您需要做三件事才能使其正常工作
overlaps(start1,end1,start2,end2)
并将其指定为您的
spring.jpa.properties.hibernate.dial
(或spring.jpa.database platform
public class PostgisDialect extends org.hibernate.spatial.dialect.postgis.PostgisPG95Dialect {
public PostgisDialect() {
super();
registerFunction("dateoverlaps", new StandardSQLFunction("overlaps", StandardBasicTypes.BOOLEAN));
}
}