我需要有关从sql到Hibernate的代码的帮助,请希望你帮我完成这项工作......
SELECT x(coordenadas) as latitud, y(coordenadas) as longitud FROM datos;
我是此页面中的新用户: - (
我有两个名为datos和dispositivo的表,我正在使用来自Netbeans的hibernate来获取名为datos的表的寄存器,但问题是我不知道如何转换这句话。因为我的表包含一个带有类型数据“几何属性函数”的寄存器,称为“coordenadas”。 GeomFromText(“Point(18.30 -99)”)。我需要在列表中将此表的注册表作为Latitud和Longitud。请帮帮我:(。对不起我的英语,我正在学习。
我有一个包含这些寄存器数据的表,fecha,dirLat,dirLong,Latitud,Longitud,altura,我用这种方法接收寄存器......
package Modelo;
import com.conf.hibernate.HibernateUtil;
import com.hibernate.Datos;
import java.util.List;
import org.hibernate.Session;
public class FuncionesHibernate {
public List<Datos> Tabla_Datos(){
Session s = HibernateUtil.getSessionFactory().getCurrentSession();
s.beginTransaction();
List<Datos> lista = (List<Datos>)s.createQuery("From Datos").list();
s.getTransaction().commit();
return lista;
}
}
然后使用来自Servlet的代码,我得到了Latitud和Longitud ......
FuncionesHibernate funcionesHibernate = new FuncionesHibernate();
List<Datos> lista = funcionesHibernate.Tabla_Datos();
for(Datos d : lista){
latitud=d.getLatitud();
longitud=d.getLongitud();
}
问题是表格已更新,包含Latitud和Longitud的寄存器更改为coordenadas
几何。那么现在我需要在mySql的控制台中为这种新方法插入寄存器。
insert into datos values(1,1,"2013-02-02","14:00:00",GeomFromText("Point(18.30 -99)"),20);
现在我的方法'FuncionesHibernate'无法正常工作。
“coordenadas”寄存器没有另一种方法可以使用新表吗?什么是Hibernate的新查询?
对于这个razon,我需要将此查询翻译为查询Hibernate ..
SELECT x(coordenadas) as latitud, y(coordenadas) as longitud FROM datos;
答案 0 :(得分:0)
函数从HQL传递到底层SQL,因此您可以使用几乎相同的查询(只需指定正确的实体名称)
另一种选择是使用native query。
答案 1 :(得分:0)
我建议使用原生查询:尝试以下代码
transaction = session.beginTransaction();
String sql = "insert into datos values(1,1,"2013-02-02","14:00:00",GeomFromText("Point(18.30 -99)"),20)";
Query query = session.createSQLQuery(sql);
query.executeUpdate();
session.getTransaction().commit();
session.flush();
如果此代码工作正常,则用动态值替换硬编码值。
修改强>
在类路径中添加 hibernate-spatial-mysql - * .jar 并尝试下面的代码。
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.Point;
Coordinate coord = new Coordinate(52.5, 13.3);
Point point = new GeometryFactory().createPoint(coord);
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query query = session.createQuery("FROM datos WHERE WITHIN(:location, polygon) = true", Datos.class);
query.setParameter("location", point);
session.getTransaction().commit();