【问题标题】:failing to persist geometry object to oracle using hibernate spatial无法使用休眠空间将几何对象持久保存到 Oracle
【发布时间】:2018-05-06 14:33:45
【问题描述】:

我将 SpringHibernate Spatial 5.0.12 一起使用,并尝试使用 @ 将 com.vividsolutions.jts.geom.Geometry 对象持久化到 Oracle 数据库987654322@ 列,但在尝试将其保存到数据库时出现此异常:

ORA-00932: Inconsistent datatypes: expected MDSYS.SDO_GEOMETRY got BINARY

我在其他任何地方都没有发现这个问题,也不知道如何解决它,因为我是 hibernate 新手。

这是我要保存的实体:

@Entity
@Table(name = "DETECTED_OBJECTS")
public class DetectedObject {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "DETECTED_SEQ")
    @SequenceGenerator(sequenceName = "detected_seq", allocationSize = 1, name = "DETECTED_SEQ"_
    private Long id;
    private Geometry polygon;

    public DetectedObject(){}

    public DetectedObject(Coordinate[] coordinates){
    this.polygon = new GeometryFactory().createPolygon(coordinates);
    }
}

这是我的休眠配置:

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.Oracle10gDialect
spring.jpa.properties.provider_class = org.hibernate.cache.NoCacheProvider
spring.jpa.hibernate.ddl-auto = update
spring.jpa.properties.hibernate.format-sql = true

以及引发异常的实际行:

detectedObjectRepository.save(detectedObject)

【问题讨论】:

    标签: java hibernate spring-data-jpa oracle10g hibernate-spatial


    【解决方案1】:

    解决方案是通过更改此行来明确告诉 spring 我正在使用带有 hibernate 的空间方言:

    spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.Oracle10gDialect
    

    对此:

    spring.jpa.properties.hibernate.dialect = org.hibernate.spatial.dialect.oracle.OracleSpatial10gDialect
    

    【讨论】:

      【解决方案2】:

      请在application.properties中添加以下配置:

      spring.jpa.properties.hibernate.dialect = org.hibernate.spatial.dialect.oracle.OracleSpatial10gDialect
      
      spring.datasource.type=oracle.jdbc.pool.OracleDataSource
      

      如果这不起作用,请在模型中使用 geolatte 库和以下属性:

      private Point<G2D> point;
      private Polygon<G2D> polygon;
      

      【讨论】:

        猜你喜欢
        • 2017-06-05
        • 1970-01-01
        • 2013-09-02
        • 1970-01-01
        • 2022-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多