Nhibernate 查询无主键表或视图时,查询结果不正确的问题
来源:互联网 发布:我的世界pe一键挖矿js 编辑:程序博客网 时间:2024/06/06 00:09
问题:Nhinbernate用生成的SQL语句,可以在toad里查询出正确的结果,但在程序里查询出结果不正确,虽然查询出来的数据行数正确,但具体某些列的值不正确
原因:查询的视图或表没有权限
解决办法:可以使用联合主键
代码大致如下
实体类文件 V_Sgs_ExceptionList.cs
using System;
using System.Collections;
namespace Data.Hbm
{
/// <summary>
/// 车流水
/// </summary>
public class V_Sgs_ExceptionList
{
/// <summary>
/// 主键
/// </summary>
public string TruckKey
{
get
{
if (_Exceptionpk != null)
return _Exceptionpk.TruckKey;
return "";
}
}
public override string CntrNO
{
get
{
if (_Exceptionpk != null)
return _Exceptionpk.CntrNo;
return "";
}
}
public virtual string ErrorId
{
get
{
if (_Exceptionpk != null)
return _Exceptionpk.ErrorId;
return "";
}
//set { errorId = value; }
}
private string _ExceptionDes;
public string ExceptionDes
{
get { return _ExceptionDes; }
set { _ExceptionDes = value; }
}
private ExceptionPk _Exceptionpk;
public ExceptionPk Exceptionpk
{
get { return _Exceptionpk; }
set { _Exceptionpk = value; }
}
}
public class ExceptionPk
{
private string _truckKey;
private string _CntrNo;
private string errorId;
public virtual string TruckKey
{
get { return _truckKey; }
set { _truckKey = value; }
}
public virtual string CntrNo
{
get { return _CntrNo; }
set { _CntrNo = value; }
}
public virtual string ErrorId
{
get { return errorId; }
set { errorId = value; }
}
/// <summary>
/// 判断两个对象是否相同,这个方法需要重写
/// </summary>
/// <param name="obj">进行比较的对象</param>
/// <returns>真true或假false</returns>
public override bool Equals(object obj)
{
if (obj is ExceptionPk)
{
ExceptionPk pk = obj as ExceptionPk;
if (this.CntrNo == pk.CntrNo
&& this.TruckKey == pk.TruckKey
&& this.ErrorId == pk.ErrorId)
{
return true;
}
}
return false;
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
}
映射文件:V_Sgs_ExceptionList.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
<class name="Data.Hbm.V_Sgs_ExceptionList, SGS.Data" table="V_Sgs_ExceptionList">
<composite-id name="Exceptionpk" class="Data.Hbm.ExceptionPk, SGS.Data">
<key-property name="TruckKey" column="TruckKey" />
<key-property name="CntrNo" column="CntrNo" />
<key-property name="ErrorId" column="EXPID" />
</composite-id>
<property name="TruckNumber" type="String(30)" column="TRUCKNUMBER"/>
<!--<property name="TruckKey" type="String(30)" column="TRUCKKEY"/>-->
<!--<property name="CntrNO" type="String(15)" column="CNTRNO"/>-->
<!--<property name="ErrorId" column="EXPID"/>-->
</class>
</hibernate-mapping>
注意:复合主键里已定义的列,不能重复定义,如上述映射文件的TruckKey不能重复
- Nhibernate 查询无主键表或视图时,查询结果不正确的问题
- EF视图查询时无主键带来的困绕
- EF中视图主键对查询结果的影响
- 解决方法:hql查询无主键表中的数据,返回的结果全是一样的!
- mysql 查询结果不正确
- dba_dependencies视图的查询结果
- hibernate无主键查询
- 关于hibernate查询视图时,相同主键的两条记录映射问题【已解决】
- ORA-01789: 查询块具有不正确的结果列数
- ORA-01789: 查询块具有不正确的结果列数
- ORA-01789: 查询块具有不正确的结果列数
- SpringBoot查询的结果按视图结果展示结果
- hibernate查询中文无结果或插入中文乱码解决方案
- oracle新建用户导入scott的表,解决新用户查询scott表时出现表或视图不存在的问题
- 问题:mybatis查询无结果集,但数据库执行相同的sql有结果集
- 如何查询“直接查询结果为空”的视图
- 如何查询“直接查询结果为空”的视图
- 查询索引所属的表或视图的信息
- HttpURLConnection碰到连续302跳转的问题
- 链接警告:warning LNK4070 :/OUT...
- 搭建集群必备:windows如何使用Xshell远程连接(SSH)Linux
- 我校学子在山东省ACM竞赛中获得优异成绩
- 关于ORACLE数据库之间创建DBLINK的问题
- Nhibernate 查询无主键表或视图时,查询结果不正确的问题
- 什么样的论坛才能算精品棋牌源码论坛
- 十五周 项目1.3 文本输入,输出工资
- 基于引用的元编程(Metaprogramming with Quotations)
- 提升left join效率
- Swift之旅--数据类型
- 用Ant实现Java项目的自动构建和部署
- 测试代码段
- [Phonegap+Sencha Touch] 移动开发22、安卓4.0.X的webview或自带浏览器中,去除输入框外面的蓝色边框