每个表都必须有主键

发布时间:2023-07-29 06:49:56   来源:文档文库   
字号:
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.1每个表都必须有主键2自增字段(native
<idname="Id"column="ID"type="Int32"unsaved-value="0"><generatorclass="native"/>id>3one-to-many出错原因
1CouldnotexcutequeryHQL语句出错
2inexpected:bumen[selectbumenfromBumenbumen]:未将配置文件属性改成“嵌入的资源”3couldnotresolveproperty:查询语句中,定义类对象后,具体字段区分大小写(应与类中变量名同)4Thefollowingtypesmaynotbeusedasproxies:类中定义变量未添加virtual5、多表关联,主外键
6可以将查询出来的字段属性组建成一个新的类,需要定义配置文件,在类文件中需添加构造函数。
"select
distinct
newViewGwFile(gwFileDetail.Id,gwFileDetail.Gwdm,gwFileDetail.GwNameLb,gwFileDetail.GwFileLb,gwFileDetail.Seen,gwFileDetail.SignonNgr,gwFileDetail.Ngr,gwFileDetail.SignonR,gwFileDetail.Ddsj,gwFileDetail.Clqk,gwFileDetail.Zh,gwFileDetail.Nian,gwFileDetail.Hao,gwFileDetail.Mj,gwFileDetail.Jb,gwFileDetail.Qfqm,gwFileDetail.Qfrq,gwFileDetail.Bt,gwFileDetail.SignonS,gwFileDetail.StatefromGwFileDetailasgwFileDetailinnerjoingwFileDetail.gwfileprocessasprocesswhere1=1";使用NHibernate,OracleClob/NClob无法插入、乱码问题服务器Oracle9i,客户端Oracle10g问题1
NHibernate配置的Driver为,存入ClobNClob字段,值比较大时报错,错误信息中文:ORA-01461:仅可以为插入LONG列的LONG值赋值
英文:ORA-01461:canbindaLONGvalueonlyforinsertintoaLONGcolumn
Google一下有很多人碰到这个问题,有人猜测是MS,方法是改用Oracle提供的Oracle.DataAccess

解决方法:
下载安装ODAC(OracleDataAccessComponents,将NHibernateDriver配置为,确保运行目录下有

1文档收集于互联网,如有不妥请联系删除.
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.问题2
使用Oracle.DataAccess之后可以向一个NClob字段中插入长文本,但文本有的情况下会变成乱码。具体表现是输入一些中文单词,保存后正常;输入英文字符,保存后正常;输入一段中英文混杂的html,保存后变成乱码。
排除了服务器、客户端Oracle字符集设置问题。跟踪NHibernate,在调用IDbCommand执行SQL语句时,参数中的值是正常的,因此排除了程序中对文本的编码、解码问题。

经过测试,使用下面的方式存入NClob的值不会变为乱码:using;
OracleConnectioncon=newOracleConnection("......";con.Open(;OracleTransactiontran=con.BeginTransaction(;OracleCommandcommand=con.CreateCommand(;command.CommandType=CommandType.Text;command.CommandText="updatecms_templatesettemp_content=:pwheretemp_id=4";OracleParameterparam=command.CreateParameter(;param.ParameterName=":p";param.Value=;param.OracleDbType=OracleDbType.NClob;;command.ExecuteNonQuery(;tran.Commit(;con.Close(;最关键的一句是将param.OracleDbType设置为OracleDbType.NClob,这样Oracle.DataAccess就知道怎样正确处理这个参数了。

NHibernate为了兼容多数据库,统一使用IDbParameter接口,对于NHibernate内部来讲这个问题不好解决,我的方法是为CLobNClob类型的属性实现一个,在它的NullSafeSet方法中,修改IDbCommand中该字段对应的IDbParameterOracleDbType值,具体实现如下:
2文档收集于互联网,如有不妥请联系删除.

本文来源:https://www.2haoxitong.net/k/doc/72d9e9bd74eeaeaad1f34693daef5ef7ba0d12c3.html

《每个表都必须有主键.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式