注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

让一切都逝去吧

排骨炖泥菜/猪肝炒苹果/鱼籽狗肉汤/狗头薏米汤

 
 
 

日志

 
 

Oracle VARCHAR2再次转clob  

2012-09-08 10:57:28|  分类: 数据库 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
http://ljhzzyx.blog.163.com/blog/static/38380312201111865451468/
这里已经讨论过,这里再补充下。
      现在是在有orm框架的情况下,Oracle中VARCHAR2的最大长度是4000,如果输入大于4000,oracle会把输入字符转成Long类型,再尝试插入。这是出错的提示就是期望为Long类型,但实际为VARCHAR2,这样的错误提示让人很迷惑。所以如果出现这种提示,需要想想是不是字符太长了。
      VARCHAR2转clob,之前有建临时字段的方式,不过还有一种方法。同样先需要备份数据,然后把VARCHAR2字段先转成Long型,然后再转成Clob。转换字段后,把数据内容再复制回来。

      出现错误ORA-24816: Expanded non LONG
这个问题是由于同时存在VARCHAR2 和Clob,而对Clob的sql参数绑定在VARCHAR2前就会出错,把绑定顺序换一下就可以了。

      映射blob、clob字段
@Lob
@Basic(fetch=FetchType.LAZY)
@Column(name="me_no")
public String getMeno()

在使用@Lob注释注意以下几个问题。
    @Lob适用于标注字段类型为Clob和Blob类型。
    Clob(Character Large Ojects)类型是长字符串类型,映射为实体中的类型可为char[]、Character[]、或者String类型。
    Blob(Binary Large Objects)类型是字节类型,映射为实体中的类型可为byte[]、Byte[]、或者实现了Serializable接口的类。
    因为这两种类型的数据一般占用的内存空间比较大,所以通常使用惰性加载的方式,所以一般都要与@ Basic标记同时使用,设置加载方式为FetchType.LAZY。
  评论这张
 
阅读(3226)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017