博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在java程序中如何读写带有Geometry对象的表
阅读量:5957 次
发布时间:2019-06-19

本文共 4820 字,大约阅读时间需要 16 分钟。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bitree1/article/details/63253685

一、读取Geometry对象

 

在java映射的数据库表实体类对象的字段中添加Geometry类型,如下:

@Column(name = "GEOM")

private Geometry geom;

这样就能读取到Geometry 对象,Geometry 有很多空间计算方法,具体可以查看源码。

例:

1.实体类:   

import org.hibernate.annotations.Type;import com.vividsolutions.jts.geom.Polygon;/***  Shape()*///@Column(name = "Shape", jdbcType = JdbcType.STRUCT)@Type(type = "org.hibernate.spatial.GeometryType")@Column(name = "Shape")private Polygon Shape;       public Polygon getShape() {return Shape;}public void setShape(Polygon shape) {Shape = shape;}

二、写入Geometry对象

相对于读取,写入就相对麻烦一些,首先要构建一个Geometry对象,分点线面的构建:

private GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);

点的构建

Envelope e = new Envelope(new Coordinate(x, y));

线的构建

LineString line = geometryFactory.createLineString(Coordinate[]);line.setSRID(20131028);rb.setGeometry(line);

其中,rb实体类对象的Geometry的定义格式如下:

@Column(name = "PKG_CONVEX", jdbcType = JdbcType.STRUCT)private Geometry geometry;

一定要指定jdbcType 类型,Oracle数据库中Geometry对象只接收STRUCT类型的数据

 三、*** hibernate注解报错注解方式下报java.lang.UnsupportedOperationException

hibernate 不支持此类型输出

结局方法,配置hibernate方言  

例如Sqlserver 数据库   

 
       
       
       
       
   

四、

在配置.cfg.xml时需指定使用的方言:

例:

<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>

以下是各数据库对应的方言(Dialect):

数据库

方言(Dialect)

DB2

org.hibernate.dialect.DB2Dialect

DB2 AS/400

org.hibernate.dialect.DB2400Dialect

DB2 OS390

org.hibernate.dialect.DB2390Dialect

PostgreSQL

org.hibernate.dialect.PostgreSQLDialect

MySQL5

org.hibernate.dialect.MySQL5Dialect

MySQL5 with InnoDB

org.hibernate.dialect.MySQL5InnoDBDialect

 with MyISAM

org.hibernate.dialect.MySQLMyISAMDialect

(any version)

org.hibernate.dialect.OracleDialect

Oracle 9i

org.hibernate.dialect.Oracle9iDialect

Oracle 10g

org.hibernate.dialect.Oracle10gDialect

Oracle 11g

org.hibernate.dialect.Oracle10gDialect

Sybase

org.hibernate.dialect.SybaseASE15Dialect

Sybase Anywhere

org.hibernate.dialect.SybaseAnywhereDialect

Microsoft SQL Server 2000

org.hibernate.dialect.SQLServerDialect

Microsoft SQL Server 2005

org.hibernate.dialect.SQLServer2005Dialect

Microsoft SQL Server 2008

org.hibernate.dialect.SQLServer2008Dialect

SAP DB

org.hibernate.dialect.SAPDBDialect

Informix

org.hibernate.dialect.InformixDialect

HypersonicSQL

org.hibernate.dialect.HSQLDialect

H2 Database

org.hibernate.dialect.H2Dialect

Ingres

org.hibernate.dialect.IngresDialect

Progress

org.hibernate.dialect.ProgressDialect

Mckoi SQL

org.hibernate.dialect.MckoiDialect

Interbase

org.hibernate.dialect.InterbaseDialect

Pointbase

org.hibernate.dialect.PointbaseDialect

FrontBase

org.hibernate.dialect.FrontbaseDialect

Firebird

org.hibernate.dialect.FirebirdDialect

5.hibernate配置模板

 

(1)test-applicationContext-jpa.xml

Spring Data JPA

 <!-- 使用annotation 自动注册bean, 并保证@Required、@Autowired的属性被注入 -->

   

   
   
       
       
       
       
           
               
               
${hibernate.hbm2ddl.auto}
               
${hibernate.dialect}
               
org.hibernate.cache.ehcache.EhCacheRegionFactory
               
test-ehcache-hibernate-local.xml
               
org.hibernate.cfg.ImprovedNamingStrategy
           
       
   
   
       
           
       
       
       
   
   
   
   
   
       
   
   
   
   
   
   
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
   
   

(2)test-ehcache-hibernate-local.xml

   

(3)logback-test.xml

   
       
           
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n           
       
   
   
       
   

(4)

# Hibernate hibernate.hbm2ddl.auto=updatehibernate.generateDdl=truehibernate.showSql=truehibernate.dialect=org.hibernate.spatial.dialect.sqlserver.SqlServer2008SpatialDialect#===================================================#MSSqlServer database settingsjdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriverjdbc.url=jdbc:jtds:sqlserver://****:1433;DatabaseName=***jdbc.username=sajdbc.password=123456

将不定期更新资源,欢迎持续关注


想获得更多的学习知识请关注微信公众号:西北码农或扫下方二维码

你可能感兴趣的文章
博客搬家了
查看>>
Python中使用ElementTree解析xml
查看>>
jquery 操作iframe、frameset
查看>>
解决vim中不能使用小键盘
查看>>
jenkins权限管理,实现不同用户组显示对应视图views中不同的jobs
查看>>
我的友情链接
查看>>
CentOS定时同步系统时间
查看>>
批量删除用户--Shell脚本
查看>>
如何辨别android开发包的安全性
查看>>
Eclipse Java @Override 报错
查看>>
知道双字节码, 如何获取汉字 - 回复 "pinezhou" 的问题
查看>>
linux中cacti和nagios整合
查看>>
Parallels Desktop12推出 新增Parallels Toolbox
查看>>
Python高效编程技巧
查看>>
Kafka服务端脚本详解(1)一topics
查看>>
js中var self=this的解释
查看>>
面试题
查看>>
Facebook 接入之获取各个配置参数
查看>>
linux的日志服务器关于屏蔽一些关键字的方法
查看>>
事情的两面性
查看>>