【问题标题】:HQL : Distance calculation between two locations?HQL:两个位置之间的距离计算?
【发布时间】:2015-10-26 15:38:57
【问题描述】:

我有一个表Restaurants,其中存储了餐厅的详细信息,包括LatitudeLongitude。现在我必须从给定Lat/Lon 输入值的20 Kilo Meter 内的数据库中整理出记录。

我正在使用带有休眠功能的 RESTful Web 服务。

实体类

@Entity
@Table(name = "restaurants")
public class Restaurants implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "restaurant_id")
    private int restaurantId;

    @Column(name = "restaurant_name")
    private String restaurantName;

    @Column(name = "category_id")
    private Integer categoryId;

    @Column(name = "image_url")
    private String imageUrl;

    private Float longitude;

    private Float latitude;

    @Column(name = "contact_name")
    private String contactName;

    @Column(name = "primary_phone")
    private String primaryPhone;

    @Column(name = "secondary_phone")
    private String secondaryPhone;

    private String fax;

    private String address1;

    private String address2;

    //Getters and Setters

} 

我浏览过,但找不到任何令人满意的答案。通过between 操作来找出Lat/Long 之间的区别是否更可取。或者我使用Criteria 吗?任何人请给我一个答案。?

【问题讨论】:

    标签: java mysql spring hibernate rest


    【解决方案1】:

    也许你选择使用 Hibernate Spatial ?

    您可以在这里找到教程:http://www.hibernatespatial.org/documentation/02-Tutorial/01-tutorial4/

    注意所有数据库都不支持 Hibernate Spatial。你可以在这里查看你的数据库支持:http://www.hibernatespatial.org/documentation/03-dialects/01-overview/

    还要小心更改您的 SQLDialect

    【讨论】:

    • 你使用 Hibernate Spatial 还是只使用经典的 Hibernate?
    • 如果没有 Hibernate Spatial,我认为您必须计算最大和最小纬度和经度,并使用此值创建 where 子句。您可以使用 Java 库来计算您的值,例如用于 GPS 的 Java Geodesy 库(我从未尝试过)
    猜你喜欢
    • 2011-12-24
    • 2018-09-21
    • 2016-02-27
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多