在冬眠中行为不端
本文关键字:行为不端 冬眠 | 更新日期: 2023-09-27 18:36:26
在我的应用程序中,我使用的是nhibernate 2.2。我有一个名为ReportMaster的表。在此表中,它有一个名为 JOB_NUM 的字段。此文件包含以下数据
JOB_NUM
CT-2012-0072
GEN-2012-0003
UKNDT-2012-0001
CT-2012-0076-EN
在我的属性类中,这被映射到 JobNumber 归档。我的问题是,当我将查询用作 (CT-2012-0072)} 中的 {JobNumber in (CT-2012-0072)} 或 {JobNumber in (UKNDT-2012-0001)} 时,它会给我记录。但是当我将查询用作 {JobNumber in (GEN-2012-0003)} 时,它不会返回记录。
有人对这种行为不端有想法吗?"GEN"是冬眠关键字吗?我也尝试了{JobNumber in ("GEN-2012-0003")}。它也不会返回记录我按如下方式使用了代码:
ArrayList searchValues = new ArrayList();
string jobNumber = "CT-2012-0072";
searchValues.Add(jobNumber);
ArrayList reportColumns = new ArrayList();
reportColumns.Add("JobNumber");
IList reports = connection.LoadListByColumnFilter<OutageReport>("JobNumber", searchValues);
public IList LoadListByColumnFilter<T>(string column, ArrayList values)
{
if (session == null)
{
return null;
}
else
{
IList list = null;
ICriteria criteria = session.CreateCriteria(typeof(T));
criteria.Add(Expression.In(column, values));
list = criteria.List();
return list;
}
}
如果代码适用于某个值,那么它似乎是正确的。 我的猜测是没有返回 GEN-2012-0003 记录,因为数据库内容不是它的样子。例如:
- 数据库列包含前导空格或尾随空格
- 数据库列包含不可打印的字符(如 CR 或 LF)
- 其中一个字符不是它看起来的样子(例如,零实际上是字母"O",或者看起来像减号的东西是一个看起来相似的 unicode 字符)
我建议打开休眠SQL日志记录并检查生成的SQL语句。然后在 SQL 工具中复制该语句并尝试在那里执行它,看看它是否返回记录。如果不是,那么这不是休眠问题。