HHH-12608 Support for ST_Dwithin() in DB2
This commit is contained in:
parent
89844c50de
commit
2cd4608f9f
|
@ -5,4 +5,8 @@
|
|||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
*/
|
||||
|
||||
repositories {
|
||||
mavenLocal( )
|
||||
}
|
||||
|
||||
jdbcDependency "com.ibm.db2:db2jcc:11.1"
|
|
@ -1,7 +0,0 @@
|
|||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
*/
|
||||
jdbcDependency "mysql:mysql-connector-java:5.1.15"
|
|
@ -1,26 +0,0 @@
|
|||
#
|
||||
# Hibernate, Relational Persistence for Idiomatic Java
|
||||
#
|
||||
# License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||
# See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
#
|
||||
|
||||
hibernate.test.new_metadata_mappings = true
|
||||
|
||||
hibernate.dialect org.hibernate.spatial.dialect.mysql.MySQLSpatialDialect
|
||||
hibernate.connection.driver_class com.mysql.jdbc.Driver
|
||||
hibernate.connection.url jdbc:mysql://hibernate-spatial-integration.cctaez8ywvn2.eu-west-1.rds.amazonaws.com/test
|
||||
hibernate.connection.username hbs
|
||||
hibernate.connection.password
|
||||
|
||||
hibernate.connection.pool_size 5
|
||||
|
||||
hibernate.show_sql true
|
||||
hibernate.format_sql true
|
||||
|
||||
hibernate.max_fetch_depth 5
|
||||
|
||||
hibernate.cache.region_prefix hibernate.test
|
||||
hibernate.cache.region.factory_class org.hibernate.testing.cache.CachingRegionFactory
|
||||
|
||||
|
|
@ -7,9 +7,9 @@
|
|||
|
||||
hibernate.dialect org.hibernate.spatial.dialect.mysql.MySQL56SpatialDialect
|
||||
hibernate.connection.driver_class com.mysql.jdbc.Driver
|
||||
hibernate.connection.url jdbc:mysql://hibernate-spatial-integration.cctaez8ywvn2.eu-west-1.rds.amazonaws.com:3306/test
|
||||
hibernate.connection.username hbs
|
||||
hibernate.connection.password
|
||||
hibernate.connection.url jdbc:mysql://hibern8.cctaez8ywvn2.eu-west-1.rds.amazonaws.com:3306/hibernate_orm_test
|
||||
hibernate.connection.username hibernateormtest
|
||||
hibernate.connection.password hibernateormtest
|
||||
|
||||
|
||||
hibernate.connection.pool_size 5
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
*/
|
||||
jdbcDependency "mysql:mysql-connector-java:5.1.15"
|
|
@ -1,28 +0,0 @@
|
|||
#
|
||||
# Hibernate, Relational Persistence for Idiomatic Java
|
||||
#
|
||||
# License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||
# See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
#
|
||||
|
||||
hibernate.test.new_metadata_mappings = true
|
||||
|
||||
hibernate.dialect org.hibernate.spatial.dialect.mysql.MySQL5InnoDBSpatialDialect
|
||||
hibernate.connection.driver_class com.mysql.jdbc.Driver
|
||||
|
||||
hibernate.connection.url jdbc:mysql://hibernate-spatial-integration.cctaez8ywvn2.eu-west-1.rds.amazonaws.com:3306/test
|
||||
hibernate.connection.username hbs
|
||||
hibernate.connection.password
|
||||
|
||||
|
||||
hibernate.connection.pool_size 5
|
||||
|
||||
hibernate.show_sql true
|
||||
hibernate.format_sql true
|
||||
|
||||
hibernate.max_fetch_depth 5
|
||||
|
||||
hibernate.cache.region_prefix hibernate.test
|
||||
hibernate.cache.region.factory_class org.hibernate.testing.cache.CachingRegionFactory
|
||||
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
*/
|
||||
jdbcDependency "com.oracle.jdbc:ojdbc6:11.2.0.3"
|
|
@ -1,23 +0,0 @@
|
|||
#
|
||||
# Hibernate, Relational Persistence for Idiomatic Java
|
||||
#
|
||||
# License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||
# See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
#
|
||||
|
||||
hibernate.dialect org.hibernate.spatial.dialect.oracle.OracleSpatial10gDialect
|
||||
hibernate.connection.driver_class oracle.jdbc.driver.OracleDriver
|
||||
hibernate.connection.url jdbc:oracle:thin:@localhost:1521/orcl12c
|
||||
hibernate.connection.username C##hibernate
|
||||
hibernate.connection.password hibernate
|
||||
|
||||
|
||||
hibernate.connection.pool_size 5
|
||||
|
||||
hibernate.show_sql true
|
||||
hibernate.format_sql true
|
||||
|
||||
hibernate.max_fetch_depth 5
|
||||
|
||||
hibernate.cache.region_prefix hibernate.test
|
||||
hibernate.cache.region.factory_class org.hibernate.testing.cache.CachingRegionFactory
|
|
@ -1,7 +0,0 @@
|
|||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
*/
|
||||
jdbcDependency "postgresql:postgresql:8.4-701.jdbc4"
|
|
@ -1,24 +0,0 @@
|
|||
#
|
||||
# Hibernate, Relational Persistence for Idiomatic Java
|
||||
#
|
||||
# License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||
# See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
#
|
||||
|
||||
hibernate.test.new_metadata_mappings = true
|
||||
hibernate.dialect org.hibernate.spatial.dialect.postgis.PostgisDialect
|
||||
hibernate.connection.driver_class org.postgresql.Driver
|
||||
hibernate.connection.url jdbc:postgresql://localhost:5432/hibbrtru
|
||||
hibernate.connection.username hibbrtru
|
||||
hibernate.connection.password hibbrtru
|
||||
|
||||
|
||||
hibernate.connection.pool_size 5
|
||||
|
||||
hibernate.show_sql true
|
||||
hibernate.format_sql true
|
||||
|
||||
hibernate.max_fetch_depth 5
|
||||
|
||||
hibernate.cache.region_prefix hibernate.test
|
||||
hibernate.cache.region.factory_class org.hibernate.testing.cache.CachingRegionFactory
|
|
@ -1,7 +0,0 @@
|
|||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
*/
|
||||
jdbcDependency "postgresql:postgresql:8.4-701.jdbc4"
|
|
@ -1,24 +0,0 @@
|
|||
#
|
||||
# Hibernate, Relational Persistence for Idiomatic Java
|
||||
#
|
||||
# License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||
# See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
#
|
||||
|
||||
hibernate.test.new_metadata_mappings = true
|
||||
hibernate.dialect org.hibernate.spatial.dialect.postgis.PostgisPG91Dialect
|
||||
hibernate.connection.driver_class org.postgresql.Driver
|
||||
hibernate.connection.url jdbc:postgresql://localhost:5432/hibbrtru
|
||||
hibernate.connection.username hibbrtru
|
||||
hibernate.connection.password hibbrtru
|
||||
|
||||
|
||||
hibernate.connection.pool_size 5
|
||||
|
||||
hibernate.show_sql true
|
||||
hibernate.format_sql true
|
||||
|
||||
hibernate.max_fetch_depth 5
|
||||
|
||||
hibernate.cache.region_prefix hibernate.test
|
||||
hibernate.cache.region.factory_class org.hibernate.testing.cache.CachingRegionFactory
|
|
@ -1,7 +0,0 @@
|
|||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
*/
|
||||
jdbcDependency "postgresql:postgresql:8.4-701.jdbc4"
|
|
@ -1,24 +0,0 @@
|
|||
#
|
||||
# Hibernate, Relational Persistence for Idiomatic Java
|
||||
#
|
||||
# License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||
# See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
#
|
||||
|
||||
hibernate.test.new_metadata_mappings = true
|
||||
hibernate.dialect org.hibernate.spatial.dialect.postgis.PostgisPG92Dialect
|
||||
hibernate.connection.driver_class org.postgresql.Driver
|
||||
hibernate.connection.url jdbc:postgresql://localhost:5432/hibbrtru
|
||||
hibernate.connection.username hibbrtru
|
||||
hibernate.connection.password hibbrtru
|
||||
|
||||
|
||||
hibernate.connection.pool_size 5
|
||||
|
||||
hibernate.show_sql true
|
||||
hibernate.format_sql true
|
||||
|
||||
hibernate.max_fetch_depth 5
|
||||
|
||||
hibernate.cache.region_prefix hibernate.test
|
||||
hibernate.cache.region.factory_class org.hibernate.testing.cache.CachingRegionFactory
|
|
@ -1,7 +0,0 @@
|
|||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
*/
|
||||
jdbcDependency "postgresql:postgresql:8.4-701.jdbc4"
|
|
@ -1,24 +0,0 @@
|
|||
#
|
||||
# Hibernate, Relational Persistence for Idiomatic Java
|
||||
#
|
||||
# License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||
# See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
#
|
||||
|
||||
hibernate.test.new_metadata_mappings = true
|
||||
hibernate.dialect org.hibernate.spatial.dialect.postgis.PostgisPG93Dialect
|
||||
hibernate.connection.driver_class org.postgresql.Driver
|
||||
hibernate.connection.url jdbc:postgresql://localhost:5432/hibbrtru
|
||||
hibernate.connection.username hibbrtru
|
||||
hibernate.connection.password hibbrtru
|
||||
|
||||
|
||||
hibernate.connection.pool_size 5
|
||||
|
||||
hibernate.show_sql true
|
||||
hibernate.format_sql true
|
||||
|
||||
hibernate.max_fetch_depth 5
|
||||
|
||||
hibernate.cache.region_prefix hibernate.test
|
||||
hibernate.cache.region.factory_class org.hibernate.testing.cache.CachingRegionFactory
|
|
@ -1,7 +0,0 @@
|
|||
/*
|
||||
* Hibernate, Relational Persistence for Idiomatic Java
|
||||
*
|
||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
*/
|
||||
jdbcDependency "postgresql:postgresql:8.4-701.jdbc4"
|
|
@ -1,24 +0,0 @@
|
|||
#
|
||||
# Hibernate, Relational Persistence for Idiomatic Java
|
||||
#
|
||||
# License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||
# See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
#
|
||||
|
||||
hibernate.test.new_metadata_mappings = true
|
||||
hibernate.dialect org.hibernate.spatial.dialect.postgis.PostgisPG94Dialect
|
||||
hibernate.connection.driver_class org.postgresql.Driver
|
||||
hibernate.connection.url jdbc:postgresql://localhost:5432/hibbrtru
|
||||
hibernate.connection.username hibbrtru
|
||||
hibernate.connection.password hibbrtru
|
||||
|
||||
|
||||
hibernate.connection.pool_size 5
|
||||
|
||||
hibernate.show_sql true
|
||||
hibernate.format_sql true
|
||||
|
||||
hibernate.max_fetch_depth 5
|
||||
|
||||
hibernate.cache.region_prefix hibernate.test
|
||||
hibernate.cache.region.factory_class org.hibernate.testing.cache.CachingRegionFactory
|
|
@ -4,4 +4,8 @@
|
|||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||
*/
|
||||
jdbcDependency "com.microsoft:sqljdbc:2.0"
|
||||
repositories {
|
||||
mavenLocal( )
|
||||
}
|
||||
|
||||
jdbcDependency 'com.microsoft.sqlserver:mssql-jdbc:6.4.0.jre8'
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
|
||||
hibernate.dialect org.hibernate.spatial.dialect.sqlserver.SqlServer2008SpatialDialect
|
||||
hibernate.connection.driver_class com.microsoft.sqlserver.jdbc.SQLServerDriver
|
||||
hibernate.connection.url jdbc:sqlserver://sqlserver.geovise.com:1433;databaseName=HBS
|
||||
hibernate.connection.username hbs
|
||||
hibernate.connection.password hbs
|
||||
hibernate.connection.url jdbc:sqlserver://localhost:1433;databaseName=TestDb
|
||||
hibernate.connection.username hibern8
|
||||
hibernate.connection.password hibern8Pass
|
||||
|
||||
|
||||
hibernate.connection.pool_size 5
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
package org.hibernate.spatial.dialect.db2;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.hibernate.HibernateException;
|
||||
|
@ -14,6 +15,7 @@ import org.hibernate.boot.model.TypeContributions;
|
|||
import org.hibernate.dialect.DB2Dialect;
|
||||
import org.hibernate.dialect.function.StandardSQLFunction;
|
||||
import org.hibernate.engine.config.spi.ConfigurationService;
|
||||
import org.hibernate.engine.spi.SessionFactoryImplementor;
|
||||
import org.hibernate.service.ServiceRegistry;
|
||||
import org.hibernate.spatial.GeolatteGeometryJavaTypeDescriptor;
|
||||
import org.hibernate.spatial.GeolatteGeometryType;
|
||||
|
@ -25,6 +27,9 @@ import org.hibernate.spatial.SpatialDialect;
|
|||
import org.hibernate.spatial.SpatialFunction;
|
||||
import org.hibernate.spatial.SpatialRelation;
|
||||
import org.hibernate.type.StandardBasicTypes;
|
||||
import org.hibernate.type.Type;
|
||||
|
||||
import static java.lang.String.format;
|
||||
|
||||
/**
|
||||
* @author David Adler, Adtech Geospatial
|
||||
|
@ -223,6 +228,7 @@ public class DB2SpatialDialect extends DB2Dialect implements SpatialDialect {
|
|||
) );
|
||||
|
||||
// Register non-SFS functions listed in Hibernate Spatial
|
||||
registerFunction( "dwithin", new DWithinFunction());
|
||||
|
||||
// // The srid parameter needs to be explicitly cast to INTEGER to avoid a -245 SQLCODE,
|
||||
// // ambiguous parameter.
|
||||
|
@ -244,7 +250,7 @@ public class DB2SpatialDialect extends DB2Dialect implements SpatialDialect {
|
|||
|
||||
@Override
|
||||
public String getDWithinSQL(String columnName) {
|
||||
return "db2gse.ST_Distance(" + columnName + ",?) < ?";
|
||||
return "db2gse.ST_Intersects(" + columnName + ", db2gse.ST_Buffer(?, ?, 'METER')) = 1";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -317,4 +323,24 @@ public class DB2SpatialDialect extends DB2Dialect implements SpatialDialect {
|
|||
public boolean supportsFiltering() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
private static class DWithinFunction extends StandardSQLFunction {
|
||||
|
||||
public DWithinFunction() {
|
||||
super( "db2gse.ST_Dwithin" , StandardBasicTypes.NUMERIC_BOOLEAN);
|
||||
}
|
||||
|
||||
public String render(Type firstArgumentType, final List args, final SessionFactoryImplementor factory) {
|
||||
StringBuilder sb = new StringBuilder( "db2gse.ST_Intersects( " );
|
||||
sb.append( (String)args.get(0) ) //
|
||||
.append(", db2gse.ST_Buffer(")
|
||||
.append((String)args.get(1) )
|
||||
.append(", ")
|
||||
.append((String)args.get(2) )
|
||||
.append(", 'METER'))");
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -88,7 +88,7 @@ public class DB2ExpectationsFactory extends AbstractExpectationsFactory {
|
|||
|
||||
@Override
|
||||
protected NativeSQLStatement createNativeDwithinStatement(Point geom, double distance) {
|
||||
String sql = "select t.id, DB2GSE.ST_dwithin(t.geom, DB2GSE.ST_GeomFromText(?, 4326), " + distance + " ) from GeomTest t where DB2GSE.ST_dwithin(t.geom, DB2GSE.ST_GeomFromText(?, 4326), " + distance + ") = 1 and db2gse.st_srid(t.geom) = 4326";
|
||||
String sql = "select t.id, DB2GSE.ST_dwithin(DB2GSE.ST_GeomFromText(?, 4326), t.geom, " + distance + " , 'METER') from GeomTest t where DB2GSE.ST_dwithin(DB2GSE.ST_GeomFromText(?, 4326), t.geom, " + distance + ", 'METER') = 1 and db2gse.st_srid(t.geom) = 4326";
|
||||
return createNativeSQLStatementAllWKTParams( sql, geom.toText() );
|
||||
}
|
||||
|
||||
|
|
|
@ -67,9 +67,10 @@ hibernate.connection.password @jdbc.pass@
|
|||
##
|
||||
#hibernate.dialect org.hibernate.spatial.dialect.sqlserver.SqlServer2008SpatialDialect
|
||||
#hibernate.connection.driver_class com.microsoft.sqlserver.jdbc.SQLServerDriver
|
||||
#hibernate.connection.url jdbc:sqlserver://sqlserver.geovise.com:1433;databaseName=HBS
|
||||
#hibernate.connection.username hbs
|
||||
#hibernate.connection.password hbs
|
||||
#hibernate.connection.url jdbc:sqlserver://localhost:1433;databaseName=TestDb
|
||||
#hibernate.connection.username hibern8
|
||||
#hibernate.connection.password hibern8Pass
|
||||
|
||||
|
||||
|
||||
##
|
||||
|
|
Loading…
Reference in New Issue