日期:2014-05-17  浏览次数:20817 次

排序的问题,一时难定位,求帮助
主要功能:
按照项目ID查找项目功能,并且按照项目进度排序
设计表:
FunctionList 表
说明:项目功能表
字段名 数据类型及长度 允许为空 描述 备注
FunctionID Number(20) 否 功能点ID 主键,自增
FunctionDescribe Varchar2(120) 功能描述
ProjectID Number(20) 项目ID 外键,Project(ProjectID)
FUNRESEMPID Number(20) 责任人ID 外键, Employee(EmpID)
FUNPLEMPID Number(20) 负责人所属的PL的id 外键, Employee(EmpID)
FunProcess Varchar2(30) 功能点进程

相关代码:
查找满足条件fuctionlist
public List<Functionlist> findByprojectIdByPage(final int offset,
final int length, Long projectid) {
List list = null;
try {
final String hql = "from Functionlist where project.projectid="+ projectid+"order by to_number(funprocess)";
list = getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
query.setFirstResult(offset);
query.setMaxResults(length);
List list = query.list();
session.close();
return (List<Functionlist>) list;
}
});
} catch (Exception re) {
re.printStackTrace();
return null;
}
return (List<Functionlist>) list;
} return (List<Functionlist>) list;

//调用上述方法,获得fuctionlist列
List<Functionlist> SearchFunctionlistByProjectId = functionListService
.findByprojectIdByPage(pageSize * (currentPage - 1),
pageSize, projectId);

主要问题:当功能名称包含中文时,没有问题,当功能名称是数字时,第一页的最后一条记录,会在以后的分页中重复出现,代替本应显示的一条记录,以上的前置条件都是进度为空,但是当不排序(去掉order by to_number(funprocess))的时候,一切又正常。


------解决方案--------------------
这里的“当功能名称是数字时”,“功能名称”是“FunProcess Varchar2(30) 功能点进程”字段吗?
------解决方案--------------------
到数据库中执行SQL语句,调整你的SQL。

以 funprocess 排序时, 这个值是否有重复的? 如果是, 那就再加一个排序条件,如id