gpt4 book ai didi

java - 无法使用 Hibernate 空间将几何对象持久保存到 Oracle

转载 作者:行者123 更新时间:2023-12-02 11:17:00 25 4
gpt4 key购买 nike

我将 SpringHibernate Spatial 5.0.12 结合使用,并尝试保留 com.vividsolutions.jts.geom.Geometry 对象到具有 SDO_GEOMETRY 列的 Oracle 数据库,但在尝试将其保存到数据库时出现此异常:

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);
}
}

这是我的 hibernate 配置:

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)

最佳答案

请在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;

关于java - 无法使用 Hibernate 空间将几何对象持久保存到 Oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50200829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com