olá pessoal!
Estou usando Hibernate Spatial, e achei um tutorial na web e fiquei feliz por conseguir fazer o código rodar.
Quando fui olhar meu Banco de dados percebi que que todos os campos foram inseridos corretamente, exceto o campo spacial.
Eis aqui as minhas classes e hibernate.cfg.xml:
<?xml version="1.0" encoding="UTF-8"?>
org.hibernate.dialect.PostgreSQLDialect
org.postgresql.Driver
jdbc:postgresql://localhost:5432/postgis
postgres
crm1p
true
true
package modelo;
import org.hibernate.Session;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.SessionFactory;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
} catch (Throwable ex) {
throw new ExceptionInInitializerError(ex);
}
}
public static Session getSession() {
return sessionFactory.openSession();
}
}
package modelo;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
/**
*
* @author lucas
*/
public class GeraBanco {
public static void main(String args[]){
Configuration conf = new AnnotationConfiguration();
conf.configure();
SchemaExport se = new SchemaExport(conf);
se.create(true, true);
}
}
package modelo;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.Point;
import com.vividsolutions.jts.geom.PrecisionModel;
import com.vividsolutions.jts.io.ParseException;
import com.vividsolutions.jts.io.WKTReader;
import org.hibernate.Session;
import org.hibernate.Transaction;
/**
*
* @author lucas
*/
public class Main {
public static void main(String[] args) {
Evento evento = new Evento();
evento.setId(200);
evento.setDescricao("Testando");
WKTReader fromText = new WKTReader();
Geometry geom = null;
try {
geom = fromText.read("10,15");
} catch (ParseException e) {
}
evento.setPonto((Point) geom);
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
System.out.println("aqui!!");
session.save(evento);
tx.commit();
session.close();
}
}
package modelo;
import com.vividsolutions.jts.geom.Point;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import org.hibernate.annotations.Type;
/**
*
* @author lucas
*/
@Entity
public class Evento implements Serializable {
@Id
// @GeneratedValue
private long id;
private String descricao;
@Type(type="org.hibernatespatial.GeometryUserType")
@Column(columnDefinition="Point")
private Point ponto;
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public Point getPonto() {
return ponto;
}
public void setPonto(Point ponto) {
this.ponto = ponto;
}
}
Bom, não sei o que está acontecendo. se eu trocar o dialect para org.hibernate.PostgisDialect dá erro, e deixando desse jeito ele não dá erro, mas também não persiste
os dados espaciais.
Se alguém puder ajudar eu ficaria muito grato!!
Um abraço a todos!
Jhonys