当前位置: 首页 > 面试题库 >

在PostgreSQL和JPA / Hibernate中使用Point类型

司寇旺
2023-03-14
问题内容

有没有一种方法可以将Point列映射到Java实体字段?

我尝试了Hibernate Spatial 4.0,但似乎没有PostGIS的纯PostgreSQL就无法使用。这是点字段定义:

import com.vividsolutions.jts.geom.Point;
...
@Column(columnDefinition = "point")
@Type(type = "org.hibernate.spatial.GeometryType")
private Point location;

persistence.xml中的方言:

<property name="hibernate.dialect"  value="org.hibernate.spatial.dialect.postgis.PostgisDialect" />

当我尝试保留该实体时,会引发异常:

org.postgresql.util.PSQLException: Unknown type geometry.
at org.postgresql.jdbc2.AbstractJdbc2Statement.setPGobject(AbstractJdbc2Statement.java:1603)
at org.postgresql.jdbc2.AbstractJdbc2Statement.setObject(AbstractJdbc2Statement.java:1795)
at org.postgresql.jdbc3g.AbstractJdbc3gStatement.setObject(AbstractJdbc3gStatement.java:37)
at org.postgresql.jdbc4.AbstractJdbc4Statement.setObject(AbstractJdbc4Statement.java:46)
at org.hibernate.spatial.dialect.AbstractJTSGeometryValueBinder.bind(AbstractJTSGeometryValueBinder.java:48)
at org.hibernate.spatial.dialect.AbstractJTSGeometryValueBinder.bind(AbstractJTSGeometryValueBinder.java:39)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:280)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:275)
at org.hibernate.type.AbstractSingleColumnStandardBasicType.nullSafeSet(AbstractSingleColumnStandardBasicType.java:57)

似乎它试图将值保留为PostGIS的Geometry类型。但是我只想使用简单的Point。


问题答案:

您应该尝试在数据库中将类型指定为Geometry,但我也没有设法使用mySQL做到这一点。几何对于点很有效。



 类似资料:
  • 有没有办法将点列映射到Java实体字段? 我尝试了Hibernate空间4.0,但似乎它不适用于没有PostGIS的纯PostgreSQL。这里是点字段定义: persistence.xml方言: 当我尝试持久化这个实体时,会引发异常: 因此,它似乎试图将价值作为PostGIS的几何类型。但是我想用简单的Point。

  • 问题内容: 我正在尝试将Postgres自定义类型(名为transmission_result)映射到Hibernate / JPA POJO。postgres自定义类型或多或少是字符串值的枚举类型。 我创建了一个名为PGEnumUserType的自定义EnumUserType以及一个表示postgres枚举值的枚举类。当我对一个真实的数据库运行它时,我收到以下错误:’ERROR:列“状态”的类型

  • 问题内容: 我们对PostgreSQL中的继承以及在JPA中将其映射为实体存在疑问。我们的数据库和我们要映射的表是: 我们在Netbeans 7.1.2中使用自动工具将它们映射到实体。起初我认为仅添加就足够了 因此,它只是 扩大了 ,但无法正常工作。最好的方法是什么?提前致谢。 问题答案: JPA的继承概念基于普通表。它并没有真正“理解” PostgreSQL表继承的想法。这是使用旨在暴露功能的最

  • 问题内容: 我有一个使用SchemaUpdate的主要方法,可以在控制台上显示要更改/创建的表,并且在我的Hibernate项目中可以正常工作: 我想在JPA项目中重用此代码,它没有hibernate.cfg.xml文件(也没有.properties文件),但是有一个persistence.xml文件(如JPA规范指定的在META- INF目录中自动检测到) 。 我尝试了这种过于简单的调整, 但由

  • 问题内容: 好吧,我正在尝试使用JPA + Hibernate + Spring首次配置C3P0。在persistence.xml中,我有: 但是,当我尝试初始化tomcat时,出现以下错误: 编辑1: 这是我的applicationContext.xml,如何在其中配置C3P0呢? 问题答案: 您的配置有缺陷。您正在应用程序上下文中进行配置。因此,基本上所有属性都是无用的,其次,该属性的设置破坏

  • 问题内容: 我试图在使用UUID作为主键的PostgreSQL中保留一个实体。我尝试将其持久保存为普通的UUID: 有了以上,我得到这个错误: 我也尝试将UUID保留为byte []无济于事: 如果删除@Lob,我得到的错误与上面发布的错误相同。但是使用@Lob时,错误会稍微更改为: 无法完成如此简单的操作,我感到非常难过! 我正在将Hibernate 4.1.3.Final与PostgreSQL