当前位置: 首页 > 知识库问答 >
问题:

在Hibernate Spatial中使用HQL时,Get查询不起作用

谈桐
2023-03-14

我使用Spring Boot和Hibernate进行空间查询。使用的库:1.Spring引导-2.1.3。发布2.Hibernate空间-5.3.7。最后3。mysql Ver 15.1版本10.1.36

每当我在下面的查询中使用HQL时,我在应用程序启动期间会遇到以下错误,但是当我尝试使用本机查询时,它会起作用。

我试过用不同的方言。此外,还尝试使用columnDefinition,其值为几何体、geolatte几何体。

pom.xml

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-spatial</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.postgresql</groupId>
          <artifactId>postgresql</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
    </dependency>

application.yml

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: none
    properties:
      hibernate:
        jdbc:
          lob:
            non_contextual_creation: true
        physical_naming_strategy: com.orange.alc.polygon.dao.config.DefaultNamingStrategy 
        format_sql: false
        dialect: org.hibernate.spatial.dialect.mysql.MySQLSpatialDialect 

@Entity
public class PolygonMasterEntity {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  // Here we have used Geolatte library
  private Polygon geometry;

  @Column(name = "is_active")
  private Boolean active;

  @Column(name = "is_deleted")
  private Boolean deleted;
}

@Repository
public interface PolygonMasterRepository extends JpaRepository<PolygonMasterEntity, Long>,
    JpaSpecificationExecutor<PolygonMasterEntity> {

  @Query("select master from #{#entityName} master WHERE" 
      + " and within(master.geometry, :point)")
  List<PolygonMasterEntity> findCostUsingPointForLLME(
      @Param("point") Point point);

}

目前,我在启动过程中遇到以下错误:

引起原因:org.hibernate.hql.internal.ast.QuerySynTaxExcema:意外AST节点:(近第1行,第164列[选择主从com.orange.alc.polygon.dao.entity.PolygonMasterEntity主WHERE内(master.geometry,: point)]

~~~~~~~~~   at org.hibernate.hql.internal.ast.ErrorTracker.throwQueryException(ErrorTracker.java:93)
~~~~~~~~~   at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:277)
~~~~~~~~~   at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:191)
~~~~~~~~~   at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:143)
~~~~~~~~~   at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:119)
~~~~~~~~~   at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
~~~~~~~~~   at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:153)
~~~~~~~~~   at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:595)
~~~~~~~~~   at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:704)
~~~~~~~~~   ... 100 common frames omitted


共有1个答案

薛坚
2023-03-14

您的查询中有就在的后面。我认为这不是合法的HQL,您应该删除

 类似资料:
  • 数据库: SQL查询 搜索 当我使用“Like”查询时,一切都正常,但是当我查找John时,它会显示John和Johnson的两个结果,因为它们是相似的。但当我搜索约翰时,它必须只显示约翰(而不是约翰逊)的结果。 到目前为止,我试过: 但它不起作用LogCat: 请给我一个提示。

  • 我希望通过登录搜索员工列表,并使用扩展的DAO接口: 在我的服务层中,我用

  • 问题内容: 我正在使用嵌套集模型在iPhone上的本地SQLite数据库中存储较大的数据层次结构。我从他们的网站上阅读了MySQL技术文章,了解如何执行此操作,但是他们建议的查询(以及我需要的查询)之一似乎不适用于SQLite,并且我不确定如何解决它。 SQLite报告不是列,我认为这是因为其子查询实现不完整。有人对如何解决此限制有任何想法吗? 查询的目的是获取给定父节点的所有直接子代。 问题答案

  • 问题内容: 我有一个响应迅速的网页。它利用媒体查询。 但是在iframe中加载的同一页面无法正常工作。 例如,考虑到我的网页,当屏幕宽度小于640px时,我将背景色设置为红色。 因此,当我在新标签页中加载该窗口并使浏览器宽度小于640px时,背景颜色变为红色。 但是,在以320 * 480尺寸的iframe加载时,同一窗口没有红色的背景色。 如何使媒体查询在iframe中工作? 问题答案: 以这种

  • 问题内容: 我正在尝试从名为user_enrole的表中删除所有记录。 我认为查询的语法没有错,但这给了我错误提示 #1064-您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册,以在第1行的’* FROM user_enrole’附近使用正确的语法 我已经仔细检查了我的语法,但我无法找出问题出在哪里,请有人指出。 是由于该表与使用表之间的关系而发生的还是什么? 问题答案: 您无需在删

  • 你能帮我解决这个问题吗?我想使用此方法在我的数据库中查找特定的缺口(它是由Apache Derby制作的)。我使用了EntityManager并从NetBeans中的数据库中映射持久性-实体类。 我得到这个错误: Java . lang . illegalargumentexception:在EntityManager中创建查询时出现异常:< br >异常描述:解析[SELECT * FROM U