如何在hibernate中编写条件ORDERBY子句条件?
我需要在hibernate条件中转换以下查询 有人知道如何在hibernate中编写这个ORDERBY子句吗如何在hibernate中编写条件ORDERBY子句条件?,hibernate,criteria,Hibernate,Criteria,我需要在hibernate条件中转换以下查询 有人知道如何在hibernate中编写这个ORDERBY子句吗 select * from StudentMasterTable where SchoolId = 90 and SchoolName IS NOT NULL ORDER BY IIF(StudentType = 'O',StudentName,SchoolName) 我相信我这样做是为了处理动态orderBys: //制作一个方法,该方法将接受一个字符串,我想这是您的studentT
select * from StudentMasterTable where SchoolId = 90 and SchoolName IS NOT NULL ORDER BY IIF(StudentType = 'O',StudentName,SchoolName)
我相信我这样做是为了处理动态orderBys: //制作一个方法,该方法将接受一个字符串,我想这是您的studentType列(您可能应该为StudentMasterTable显示您的实体类,我假设studentType是字符串类型) //然后做下面的事情
"select s from StudentMasterTable s where s.schoolId = '90' and s.schoolName is not null
order by " + orderByClause(s.studentType) + ",s.studentName,s.schoolName";
最后我找到了解决办法 我创建了一个自定义类来覆盖条件公式
public class customOrderBy extends Order {
private String sqlFormula;
protected OrderBySqlFormula(String sqlFormula) {
super(sqlFormula, true);
this.sqlFormula = sqlFormula;
}
public String toString() {
return sqlFormula;
}
public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException {
return sqlFormula;
}
public static Order customOrder(String sqlFormula) {
return new OrderBySqlFormula(sqlFormula);
}
}
我把这个叫做下面
criteria.addOrder(customOrderBy.customOrder("IIF(StudentType = 'O',StudentName,SchoolName)"));
我在请求中没有StudentType,我需要通过检查表或bean中的数据来查找基于标准的解决方案
criteria.addOrder(customOrderBy.customOrder("IIF(StudentType = 'O',StudentName,SchoolName)"));