java Hibernate 处理 oracle xmltype类型
网上关于如何处理oracle xmltype类型的博客很多,我现在分享的是针对具体业务来的,我在oracle数据库entity表中detail插入了一条xmltype类型的数据
xml的详细内容如下:
<Family>
<Person>
<name>Jack</name>
<phone>123</phone>
<address>
<company>常州</company>
<home>常州</home>
</address>
</Person>
<Person>
<name>Tom</name>
<phone>456</phone>
<address>
<company>无锡</company>
<home>无锡</home>
</address>
</Person>
<Person>
<name>Andy</name>
<phone>789</phone>
<address>
<company>苏州</company>
<home>苏州</home>
</address>
</Person>
</Family>
现在要实现的业务是在前端表格中显示相应数据
我想到了3种解决途径,后来花费了一天功夫,才解决了这个业务需求。
方案一、采用oracle通过Hibernate在java中映射的实体才操作
oracle xmltype类型继承clob大数据类型,通过Hibernate操作在java中映射的实体类型为string类型,再通过dao层去存取该实体。
这个时候就遇到问题了,将xml编辑为string类型后entity.setDetail(xml);sava(entity);数据中数据被更新了,没有问题,但是entity,getDetail()的时候获得的数据为null但是数据库却是有数据的。
在花费了一段时间之后,发现需要自己编写一个类去替换string,最后取出的类型是docoment类型,将document类型做处理就好了,以下附上相关的一些资料:
1、使用Hibernate4处理Oracle XmlType字段类型
2、解决:Weblogic容器、SSH框架下Hibernate映射Oracle XMLType方法与Jar包冲突
方案二、采用Hibernate连接写sql获取xmltype的值
String sql = "select en.detail as de from entity en where en.id = '123'";
List<Map<String,Object>> list = jdbcTemplate.queryForList(sql);
结果发现报错,javax.persistence.PersistenceException: org.hibernate.MappingException: No Dialect mapping for JDBC type: 2009
查资料没发现有效的解决方案,舍弃
方案三、使用oracle自带的处理xmltype的函数进行数据读取
Oracle 中XML处理函数介绍,附上函数资料,但是发现这样子取数据必须知道数据条数而且取很麻烦
在查询资料以后发现,对与获取相同标签下的数据的时候可以使用xmltable函数,附上sql语句:
select en.id, x.*
from entity en,xmltable('/Family/Person' passing en.detail columns name path 'name',
phone path 'phone') x
where ed.id = '123'
需要注意的问题是,使用这种方法的时候,如果节点下还有子节点,那么会报方案二的错误,暂时没有找到解决方案,要处理这种情况还是选择方案一吧。
暂时就想到这几种解决方案。
java Hibernate 处理 oracle xmltype类型的更多相关文章
- Hibernate写入Oracle Date类型处理
Hibernate写入Oracle数据库时,数据库设计字段为Date类型时,只能保存年月日,不能保存时分秒,如果要保存时分秒,需修改Hibernate.cfg.xml文件 <property n ...
- java plsql 调用oracle数组类型
首先当然是在oracle中建立type CREATE OR REPLACE TYPE cux_proxy_bid_award_rec IS OBJECT ( trading_partner_id NU ...
- hibernate中java类的成员变量类型如何映射到SQL中的数据类型变化
hibernate映射文件??.hbm.xml配置映射元素详解--Hibernate映射类型 在从Hibernate的java的成员类型映射到SQL中的数据类型,其内映射方式它满足,SQL可以自己调制 ...
- java 实现往oracle存储过程中传递array数组类型的参数
注:本文来源于 < java 实现往oracle存储过程中传递array数组类型的参数 >最近项目中遇到通过往存储过程传递数组参数的问题, 浪费了N多个小时,终于有点头绪. 具体的代码 ...
- oracle xmltype导入并解析Excel数据--前言
通常,很多的时候,我们需要导入Excel数据到系统中,但是Excel数据需要我们去各种校验,比如身份证校验,手机号码校验等等. 校验失败的数据,提供Excel导出错误原因,提示给用户. 如此,如果校验 ...
- oracle xmltype导入并解析Excel数据 (三)解析Excel数据
包声明 create or replace package PKG_EXCEL_UTILS is -- Author: zkongbai-- Create at: 2016-07-06-- Actio ...
- oracle ORA-01747(系统保留关键字)user.table.column, table.column 或列说明无效 hibernate映射oracle保留关键字
1.查询系统关键 select * from v$reserved_words 确认你使用的是否为关键字: select * from v$reserved_words w where w.KEYWO ...
- oracle字段类型
oracle 字段类型CHAR 固定长度字符串 最大长度2000 bytes VARCHAR2 可变长度的字符串 最大长度4000 byt ...
- Hibernate遇到oracle之主键生成策略
一直用Hibernate+mysql,感觉Hibernate很好用,也出过什么大问题:这周,公司的产品要部署到Orecle,虽然产品号称支持Oracle但是我自己知道,这个产品压根儿就没在Oracle ...
随机推荐
- 共享MFC自绘Listctrl代码
在别人代码基础上修改的ListCtrl,支持设置行高,header高度,header背景图,奇偶行不同背景色, 支持设置某列为Checkbox,Edit,Combobox, 支持自定义排序. 效果图如 ...
- 20165230 学习基础和C语言基础调查
20165230 学习基础和C语言基础调查 技能学习经验 我擅长弹钢琴.小时候我曾上过很多兴趣班,比如钢琴.跳舞.书法.绘画等等,唯一坚持至今的只有钢琴.仔细一算学习钢琴至今已有12年,不能说已经精通 ...
- iOS 组件化的几篇文章
随着工程的成长,开发人员的增多,合理的模块划分及低耦合的重要性显得愈发重要.最近在思考这方面的问题,也读了不少通过组件化解耦的文章,这里记录一下. 前 5 篇文章有些关联,建议阅读顺序,1.3.2.4 ...
- [SCOI2010] 连续攻击问题
题目 Description lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一 ...
- Docker自动化部署方案
一 概述 Docker发布版本应该与现有的版本发布尽量一致,参考jenkins的版本发布过程:我认为maven库和docker库有很多类似的地方,因此打包过程参考maven的打包过程:重点实现dock ...
- Spring Boot 2.0(五):Docker Compose + Spring Boot + Nginx + Mysql 实践
我知道大家这段时间看了我写关于 docker 相关的几篇文章,不疼不痒的,仍然没有感受 docker 的便利,是的,我也是这样认为的,I know your felling . 前期了解概念什么的确实 ...
- 基于docker 部署 canvas-lms
准备: 一台8G内存的服务器.安装好docker, pull一个ubuntu镜像下来, 可以是最新版也可以是官方支持的14/ 16 Step 1: 启动docker容易加载ubuntu镜像.命令如下 ...
- mysql新手入门随笔
1.启动/关闭服务器 第一种方法:通过Notifier 第二种方法: 通过Windows自带的服务管理:计算机右键选择管理弹出框选择"服务和应用程序"里的服务列表,从列表中找到My ...
- [bzoj1355][Baltic2009]Radio Transmission_KMP
Radio Transmissio bzoj-1355 Description 给你一个字符串,它是由某个字符串不断自我连接形成的. 但是这个字符串是不确定的,现在只想知道它的最短长度是多少. Inp ...
- Python+reuqests自动化接口测试
1.最近自己在摸索Python+reuqests自动化接口测试,要实现某个功能,首先自己得有清晰的逻辑思路!这样效率才会很快! 思路--1.通过python读取Excel中的接口用例,2.通过pyth ...