为了账号安全,请及时绑定邮箱和手机立即绑定

org.hibernate.engine.jdbc.spi.SqlExceptionHelper

org.hibernate.engine.jdbc.spi.SqlExceptionHelper

ibeautiful 2022-08-17 17:05:58
在这里,我试图找到所有在我提供的范围内的实体。我的意思是,如果我给出一个特定半径的圆,它必须显示所有实体的位置坐标位于给定的圆内。我正在使用休眠空间来实现这一点。但是在JPA存储库接口中获得提到的错误。这是 ,pom.xml<dependency>    <groupId>org.hibernate</groupId>    <artifactId>hibernate-entitymanager</artifactId></dependency><dependency>    <groupId>org.hibernate</groupId>    <artifactId>hibernate-spatial</artifactId>    <version>5.2.12.Final</version></dependency><dependency>    <groupId>org.opengeo</groupId>    <artifactId>geodb</artifactId>    <version>${project.version}</version></dependency><dependency>    <groupId>mysql</groupId>    <artifactId>mysql-connector-java</artifactId>    <version>6.0.6</version></dependency>Jpa Repository,public interface ResourceRepository extends ExtendedJpaRepository<Resource, String> {       @Query(value = "select resource from Resource resource where within(resource.address.location, :circle) = true")    List<Resource> test(@Param("circle") Geometry circle);}Resource.java,@Entity@NoArgsConstructorpublic class Resource extends UUIDEntity2 implements IsResource {    @Type(type = "org.hibernate.spatial.GeometryType")    @OneToOne    private Address address;    /*getters setters*/}Address.java,@Entitypublic class Address extends UUIDEntity2 implements HasEmailAddress, HasLocation {    @Embedded    @Column(columnDefinition = "point")    private Location location;    /*getters setters*/}location.java,@Embeddable@Value(staticConstructor = "of")@RequiredArgsConstructor(staticName = "of")public class Location implements Serializable {    @Column(nullable = true)    private Double lat;    @Column(nullable = true)    private Double lon;}测试    @Inject    private ResourceRepository resourceRepository;    public Geometry createCircle(double x, double y, double radius) {        GeometricShapeFactory shapeFactory = new GeometricShapeFactory();        shapeFactory.setNumPoints(32);        shapeFactory.setCentre(new Coordinate(x, y));        shapeFactory.setSize(radius * 2);        return shapeFactory.createCircle();    }
查看完整描述

1 回答

?
森栏

TA贡献1810条经验 获得超5个赞

听起来你没有配置MySQL。您能验证您是否有该行吗?SpatialDialect

hibernate.dialect=org.hibernate.spatial.dialect.mysql.MySQL56SpatialDialect

在文件中。hibernate.properties

您还可以检查日志,了解Hibernate实际使用的方言。它的名称中应包含“空间”,以便空间函数可用于休眠。


查看完整回答
反对 回复 2022-08-17
  • 1 回答
  • 0 关注
  • 493 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信