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

带有Glass鱼4和PostGIS的JPA实体

东方辉
2023-03-14

我正在尝试使用PostgreSQL 9.1和PostGIS 1.5使用GlassFish 4创建一个JPA实体。

我已经通过在 domain/lib 目录中添加 postgres-jdbcpostgis-jdbc jar 来创建/配置了一个数据源。

我已经创建了一个简单的实体< code>MyPoint来处理PostGIS点:

@Entity
public class MyPoint implements Serializable {
    private static final long serialVersionUID = 1595466016586244423L;

    @Id
    private int id;

    @Column(columnDefinition="Geometry")
    private Point the_geom;

    public MyPoint() {
        super();
    }   

    public int getId() {
        return this.id;
    }

    public void setId(int id) {
        this.id = id;
    }   

    public Point getPoint() {
        return this.the_geom;
    }

    public void setPoint(Point p) {
        this.point = p;
    }

    /* (non-Javadoc)
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        return "Point [id=" + id + ", point=" + the_geom + "]";
    }   
}

和一个带有createPoint()方法的点主页,如下所示:

@Stateless(name="PointHome")
public class PointHome {
    @PersistenceContext
    private EntityManager entityManager;

    public MyPoint createPoint(MyPoint point){
        entityManager.persist(point);
        return point;
    }       
}

在战争部署中,将创建包含列idthe_geom的表MyPoint。列the_geom类型为几何。这是表架构:

CREATE TABLE mypoint
(
    id integer NOT NULL,
    the_geom geometry,
    CONSTRAINT mypoint_pkey PRIMARY KEY (id )
)

问题是在实体管理器上调用persist()方法时:

MyPoint z = new MyPoint();
z.setPoint(new Point(6, 43));
System.err.println(z);
zoneHome.createPoint(z);

我有一个< code > org . eclipse . persistence . exceptions . database exception 。

异常[EclipseLink-4002](Eclipse持久性服务-2.5.0.v20130507-3faac2b):org.Eclipse.Persistence.exceptions。DatabaseException内部异常:org.postgresql.util。PSQLException:错误:解析错误-无效几何体提示:必须指定有效的OGC WKT几何体类型,例如POINT、LINESTRING或POLYGON

原因:org.postgresql.util。PSQLException:错误:解析错误-无效几何体提示:必须指定有效的OGC WKT几何体类型,例如POINT、LINESTRING或POLYGON错误代码:0调用:INSERT INTO MYPOINT(ID,THE_GEOM)VALUES(?,?)

绑定=

有什么想法吗?

共有1个答案

李和裕
2023-03-14

使用HiberNate空间扩展(http://www.hibernatespatial.org/)与更改的MyPoint实体:

@Entity
public class MyPoint implements Serializable {
    //...
    @Type(type="org.hibernate.spatial.GeometryType")
    private Point the_geom;
    //...
}
 类似资料:
  • 问题内容: 我想使用JPA 2.0映射来自PostGIS的数据类型。我用谷歌搜索解决方案或示例,但我能找到的是JPA不支持自定义数据类型的映射。在JPA 2.0中还是这样吗?有人暗示一个例子吗? 问题答案: 我用谷歌搜索解决方案或示例,但我能找到的是,JPA不支持自定义数据类型的映射。它仍然在JPA 2.0中吗? 是。因此,您必须依赖特定的扩展。对于Hibernate,Hibernate Spat

  • 我正在从GlassFish 4迁移到WildFly8应用程序服务器并收到以下错误: 我使用Hibernate空间和PostGIS。对于Glassfish服务器,我将postgis jar添加到 /lib/ext文件夹以修复该错误。 我按照本教程中的步骤:https://gist.github.com/bjornharrtell/3054462,但它对我不起作用,即我将这些模块添加到 /org/hi

  • 我有一个企业java项目。一切都很好,直到我犯了这个错误 部署过程中发生错误:加载应用程序时出现异常:java.lang.IllegalStateExc的:ContainerBase.add子级:开始:org.apache.catalina.生命周期异常:java.lang.IllegalArgumentExc的:javax.servlet.ServletExc的:com.sun.enterpri

  • 我有一个使用JPA注释生成数据库主键的代码。一个数据库序列用于使用Oracle DB生成PK.Am 现在我对此的理解是:DB sequencer返回的sequence id作为rec_id。这是正确的吗? 医生说: 序列策略序列策略由两部分组成——定义命名序列和在一个或多个类的一个或多个字段中使用命名序列。@Sequence Generator注释用于定义序列并接受名称、初始值(默认值为1)和分配

  • 今天我读了关于ModelMapper的文章,它似乎很有趣,但我不确定它的正确用法。 我有一个类似这样的Spring项目:我有序列化所必需的模型类。我的REST控制器将DTO对象返回到前端。我的前端将DTO返回给我的控制器,然后我需要DTO中的模型对象将其写入数据库。 我有一个人类,它有一个属性,比如:

  • 问题内容: 我在PostgreSQL数据库中创建了一个函数,希望使用JPA 2.1的StoredProcedureQuery方法调用该函数。 这是我的PostgreSQL查询: 这只是一个简单的查询,可以计算特定日期的用户。这只是一个演示查询,用于测试StoredProcedureQueries的工作方式。实际上,当仅通过postgreSQL使用时,它就可以正常工作。 现在,让我们尝试使用JPA