Unknown data type: "GEOMETRY"

231 views
Skip to first unread message

Juan Carlos García

unread,
Sep 18, 2014, 11:39:15 AM9/18/14
to ge...@googlegroups.com
Hi,

I'm trying to use GeoDB on my Java project.

I'm using org.hibernate.spatial.dialect.h2geodb.GeoDBDialect and when I start my Java application, I'm getting the following error:


2014-09-18 16:53:43,667 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaExport - HHH000389: Unsuccessful: create table hospital (id bigint generated by default as identity, location GEOMETRY, name varchar(255), version integer, primary key (id))
2014-09-18 16:53:43,667 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaExport - Tipo de dato desconocido : "GEOMETRY"
Unknown data type: "GEOMETRY"; SQL statement:
create table hospital
(id bigint generated by default as identity, location GEOMETRY, name varchar(255), version integer, primary key (id)) [50004-172]


Can you help me about this error?

Rafael Lopez

unread,
Sep 19, 2014, 2:34:47 AM9/19/14
to ge...@googlegroups.com
Hola Juan Carlos,
¿que versión de h2 estás usando? recuerda que geoDB no tienen el tipo "Geometry" si no que es un "BLOB". Te recomendaría que crearas la tabla manualmente como se indica en la documentación y luego con hibernate hacer update, por si tiene que actualizar el resto de campos

Espero te sirva.
Un saludo

Juan Carlos García

unread,
Sep 19, 2014, 2:40:13 AM9/19/14
to ge...@googlegroups.com
Hola Rafael y gracias por tu respuesta,

Había visto la documentación y el tipo BLOB. El campo lo defino de la siguiente forma... es un POINT:

@Type(type = "org.hibernate.spatial.GeometryType")
 
private Point location;

¿Cómo indico que sea un campo de tipo BLOB?

Un saludo y muchas gracias

Rafael Lopez

unread,
Sep 19, 2014, 3:35:47 AM9/19/14
to ge...@googlegroups.com
lo que indicas está bien, yo he usado algo así:
@Type(type = "org.hibernate.spatial.GeometryType")
@Column(name = "GEOM")

eso lo resuelve el dialecto de Hibernate, que se encarga de traducir Geometry a definitivo BLOB. Lo que digo es a la hora de crear la geodb (la tabla geométrica) hacerlo como dice en la documentación.

--
You received this message because you are subscribed to the Google Groups "geodb" group.
To unsubscribe from this group and stop receiving emails from it, send an email to geodb+un...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.



--
visítame en:
http://rltsistemas.blogspot.com
http://soloporcomer.blogspot.com

-------------------
- Piensa si es necesario imprimir este correo
- Si un problema tiene solución ¿Por qué te preocupas?
- Si un problema no tiene solución ¿Por qué te preocupas?

Juan Carlos García

unread,
Sep 19, 2014, 3:45:05 AM9/19/14
to ge...@googlegroups.com
Hola Rafael,

El dialect que estoy utilizando es org.hibernate.spatial.dialect.h2geodb.GeoDBDialect es correcto?

He añadido al application-context.xml las siguientes propiedades para que ejecute las queries al iniciar la aplicación:

<property name="connectionInitSqls">
   
<list>
     
<value>CREATE ALIAS InitGeoDB for "geodb.GeoDB.InitGeoDB"</value>
     
<value>CALL InitGeoDB()</value>
   
</list>
</property>


Pero me aparece el siguiente error:

Function alias "INITGEODB" already exists; SQL statement:
CREATE ALIAS
InitGeoDB for "geodb.GeoDB.InitGeoDB"; [90076-172]


Un saludo y muchas gracias

Juan Carlos García

unread,
Sep 19, 2014, 5:09:10 AM9/19/14
to ge...@googlegroups.com
Hola Rafael,

He creado las tablas de forma manual y he puesto a "update" el parámetro en el persistence.xml

Ejecutando el comando SHOW TABLES aparece lo siguiente:

@h2> SHOW TABLES;
------------------+--------------+
    TABLE_NAME    | TABLE_SCHEMA |
------------------+--------------+
 GEOMETRY_COLUMNS | PUBLIC       |
 HOSPITAL         | PUBLIC       |
 _GEODB           | PUBLIC       |
------------------+--------------+

Las columnas dentro de HOSPITAL son las siguientes:

@h2> SHOW COLUMNS FROM HOSPITAL;
----------+------------------+------+-----+---------+
  FIELD   |       TYPE       | NULL | KEY | DEFAULT |
----------+------------------+------+-----+---------+
 LOCATION | BLOB(2147483647) | YES  |     | NULL    |
 NAME     | VARCHAR(255)     | YES  |     | NULL    |
 ID       | BIGINT(19)       | YES  |     | NULL    |

Como dicen las especificaciones, los campos geometry se guardan como un BLOB.

Sin embargo al añadir un registro en Hospital, aparece el siguiente error:

2014-09-19 10:58:11,171 [http-8080-6] ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper - Tabla "HOSPITAL" no encontrada Table "HOSPITAL" not found; SQL statement:

Un saludo

Rafael Lopez

unread,
Sep 24, 2014, 5:27:42 AM9/24/14
to ge...@googlegroups.com
Hola Juan Carlos, disculpa la tardanza en contestar, parece mas bien un error al mapear la Tabla HOSPITAL, no parece relacionado con la geometría. Quizá por la conexión con la base de datos? la verdad es que ahora mismo no se.
Reply all
Reply to author
Forward
0 new messages