浏览 6870 次
锁定老帖子 主题:关于hibernate的分表查询问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-10-23
如 sgip_mt_log_200610,sgip_mt_log_200609 等 映射的对象只是sgip_mt_log 这个表 在看了以前robbin的一个解答 http://www.iteye.com/topic/8576 现在在hibernate3 中可以写成这样 String sql = "select {sgip_mt_log.*} from sgip_mt_log_200610 {sgip_mt_log} order by {sgip_mt_log.MTID}"; query=session.createSQLQuery(sql).addEntity("sgip_mt_log",MTMsg.class); 一点问题都没有 但是如果把 order by 该为 where String sql = "select {sgip_mt_log.*} from sgip_mt_log_200610 {sgip_mt_log} where {sgip_mt_log.MTID}=1"; 就会报错误 ORA-00904: "MT1_0_": 无效的标识符 为什么同样的字段在order by 中就没有问题 而在where的时候就找不到别名哪 应该怎么解决哪 ? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-10-23
String sql = "select {sgip_mt_log.*} from sgip_mt_log_200610 {sgip_mt_log} where {sgip_mt_log}.MTID=1";
这样写就可以的。 至于为什么会出错?原因在于,hibernate解析出的sql语句中,会自动为表中的列加上别名,如id会变为id0_0_。 可以使用生成后的别名来进行order by排序, 但并不能使用别名来进行where条件处理,参与条件运算的必须是实际的列名,而不能是别名。 |
|
返回顶楼 | |
发表时间:2006-10-23
郁闷了 一天了谢谢
|
|
返回顶楼 | |
发表时间:2006-10-23
如果 查询count又应该如果查询哪?
|
|
返回顶楼 | |
发表时间:2007-07-11
count 查询
s.createSQLQuery("select count( * ) as count from sgip_mt_log_200610 ").addScalar("count", Hibernate.INTEGER).uniqueResult() |
|
返回顶楼 | |