hibernate操作oracle的blob字段要注意什么?
hibernate操作oracle的blob字段要注意什么?
1。 Bolb类型字段说明: 写入Blob字段和写入其它类型字段的方式非常不同,因为Blob自身有一个cursor,你必须使用cursor对blob进行操作,因而你在写入Blob之前,必须获得cursor才能进行写入,那么如何获得Blob的cursor呢? 这需要你先插入一个empty的blob,这将创建一个blob的cursor,然后你再把这个empty的blob的cursor用select查询出来,这样通过两步操作,你就获得了blob的cursor,可以真正的写入blob数据了。
2。 获取游标存在的问题: 因为我使用的是weblogic配置的数据源,weblogic做了一些封装,返回来的blob的是 weblogic。jdbc。wrapper。Blob对象,不能直接转化为oracle的JDBC的oracleBlob,否则产生转型异常Cast Exception: 代码示例: //PO:CardSuitInfo public class CardSuitInfo implements Serializable 。
。。{ private java。sql。Blob cardFacePicFile; public void setCardFacePicFile(Blob cardFacePicFile) 。。。{ this。cardFacePicFile = cardFacePicFile; } public java。
sql。Blob getCardFacePicFile() 。。。{ return this。cardFacePicFile; } } //1。首先插入空的blob cardSuitInfo。setCardFacePicFile(net。
sf。hibernate。Hibernate。createBlob(new byte[1])); session。save(cardSuitInfo); session。flush(); //2。写入blob session。refresh(cardSuitInfo, LockMode。
UPGRADE);// 设置锁定级别 weblogic。jdbc。wrapper。Blob weblogicBlob = (weblogic。jdbc。wrapper。Blob) cardSuitInfo。getCardFacePicFile(); oracle。
sql。BLOB oracleBlob = (oracle。sql。BLOB) weblogicBlob。getVendorObj(); OutputStream out = oracleBlob。getBinaryOutputStream(); byte[] buffer = cardSuitInfoView。
getCardFacePicFileBody(); out。write(buffer, 0, buffer。length); out。close(); session。save(cardSuitInfo);。
答:strSql="Selecttbl,priCatalogID,isvalid,OE_row,OE_col,OE_page,slice,db,"strSql=st...详情>>
问:同事ip:10.101.107.28 我的IP:10.101.104.23我们在...
答:你们公司是WINDOWS域环境吗,如果是的话,你在网上邻居里应该能看到对方的主机。让她把文件夹共享出来就可以。 如果不是WINDOWS域,那得看你们是不是在一个...详情>>
问:数据结构顺序表的建立,可定义顺序表 #define maxnum elemtyp...
答:打开VC ,然后点击新建,出来界面之后选择Win32 Console Application并输入工程的名称和选择项目的位置,然后出现“一个空工程”,在点击“...详情>>