java - 无法使用休眠空间将几何对象持久保存到 Oracle
问题描述
我将Spring与Hibernate Spatial 5.0.12 一起使用,并尝试将com.vividsolutions.jts.geom.Geometry
对象持久保存到带有列的Oracle数据库,SDO_GEOMETRY
但在尝试将其保存到数据库时出现此异常:
ORA-00932: Inconsistent datatypes: expected MDSYS.SDO_GEOMETRY got BINARY
我在其他任何地方都没有发现这个问题,也不知道如何解决它,因为我是休眠新手。
这是我要保存的实体:
@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)
解决方案
解决方案是通过更改此行来明确告诉春天我正在使用带有休眠的空间方言:
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.Oracle10gDialect
对此:
spring.jpa.properties.hibernate.dialect = org.hibernate.spatial.dialect.oracle.OracleSpatial10gDialect
推荐阅读
- python - Pytest cov 不读取 pyproject.toml
- python - 用 ReferenceFrame 向量替换 SymPy sp.Symbol
- neural-network - PyTorch - 正确计算神经切线内核(每个数据点的雅可比)
- ios - UIStackView 的子视图具有固有大小,但仍然忽略内容拥抱优先级
- asp.net-core - Blazor 导航栏上未打开子菜单
- image - 关于使用 Postman Binary Body 时图像变成什么的问题
- python - tkinter 树视图缩进
- java - 转换列表映射结构内的单个对象
- html - HTML CSS 问题 - 左边的图像和右边的段落
- firefox - Google Analytics URL 被 Firefox 中的 CSP 阻止,而 CSP 中允许被阻止的 URL