hibernate的order by参数,如何使asc/desc作为变量参数

zjcdxx2000 2008-05-13 04:06:24
我在做排序,“from ObjectAddress as a order by ? ? ”,第一个参数是对某个字段排序,第二参数就是按降序还是升序排列,结果第二的参数死活设置不了
使用
query.setString(0, "a.address_id");
query.setString(1, "desc");
就报错
ERROR [PARSER] line 1:134: unexpected token: :
WARN [HqlParser] processEqualityExpression() : No expression to process!

但是如果取消第二行(query.setString(1, "desc");),就可以正常执行

请哪位高手帮帮忙看看啦,感激不尽
...全文
2437 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
沙漠糊涂 2008-10-13
  • 打赏
  • 举报
回复
Criteria.addOrder(Order.asc("moneyGrade"));
zjcdxx2000 2008-05-13
  • 打赏
  • 举报
回复
哪位还有办法啊
zjcdxx2000 2008-05-13
  • 打赏
  • 举报
回复
还以为可以,结果还是有问题,不行啊
zjcdxx2000 2008-05-13
  • 打赏
  • 举报
回复
太谢谢各位了,感谢感谢阿
Shine_Panda 2008-05-13
  • 打赏
  • 举报
回复
上面 "from ObjectAddress as a order by ?空格"+"?"
Shine_Panda 2008-05-13
  • 打赏
  • 举报
回复
order by ?? 解析出来以后 中间没有空格 象 order by namedesc

"from ObjectAddress as a order by ? "+"?"
这样试试 。。。。。。。。。。。

rayt_1982 2008-05-13
  • 打赏
  • 举报
回复
假设a=1时加"desc"
int a=1;
“from ObjectAddress as a order by ? "+(a==1?"desc":"");
zjcdxx2000 2008-05-13
  • 打赏
  • 举报
回复
可是我需要设置成变量,写死的不可以
rayt_1982 2008-05-13
  • 打赏
  • 举报
回复
直接字符串操作
“from ObjectAddress as a order by ?"+"desc";
使用hibernate编程步骤 1)配置环境,加载hibernate的jar文件,以及连接数据库连接使用的jar文件,并配置CLASSPATH环境变量。 2)写POJO类(普通的java类) 3)写hibernate所需的配置文件,hibernate.cfg.xml ,Xxxxx.hbm.xml 4)调用hibernate API。 a)使用Configuration对象的buildSessionFactory()方法创建SessionFactory对象。 b)使用SessionFactory对象openSession()方法创建Session对象。 c)使用Session的相应方法来操作数据库,将对象信息持久化到数据库。 3.Hibernate的5个核心类或接口: (1)Configuration:用于解析hibernate.cfg.xml文件和XXXXX.hbm.xml文件,并创建SessionFactory对象。Configuration对象用于配置并且启动HibernateHibernate应用通过Configuration实例来指定对象--关系映射文件的位置或者动态配置Hibernate的属性,然后创建SessionFactory实例。 (2)SessionFactory:初始化Hibernate,充当数据存储源的代理,创建Session对象。一个SessinFactory实例对应一个数据存储源,应用从SessionFactory中获得Session实例。如果应用同时访问多个DB,怎需要为每个数据库创建一个单独的SessionFactory实例。 (3)Session:也被称为持久化管理器,对象级数据库操作。 特点: 1)不是线程安全的,因此在设计软件架构时,应该避免多个线程共享同一个Session实例。 2)Session实例是轻量级的,所谓轻量级,是指它的创建和销毁不需要消耗太多的资源。这意味着在程序中可以经常创建或销毁Session对象,例如为每个客户请求分配单独的Session实例,或者为每个工作单位分配单独的Session实例。 3)通常将每一个Session实例和一个DB事务邦定,也就是说,每执行一个DB事务,都应该先创建一个新的Session实例,不论事务执行成功与否,最后都应该调用Session的close()方法,从而释放Session实例占用的资源。 注:每个Session实例都有自己的缓存,这个Session实例的缓存只能被当前的工作单元访问。 (4)Query:执行数据库查询操作。要使用HQL(HibernateQueryLanguage)查询语句,HQL查询语句是面向对象的,它引用类名及类的属性名。 select/update/delete…… from …… where …… group by …… having …… order by …… asc/desc Transaction:用于管理操作事务。它对底层的事务接口做了封装,底层事务接口包括:JDBC API、JTA(JavaTransactionAPI)、CORBA(CommonObjectRequestBroker Architecture)API。

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧