hibernate 多个表映射到同一个类的查询

evo_vii 2006-10-23 01:51:10
在我们的系统中,由于数据量大,经常分表
比如,sgip_mt_log 这个表,就是按月分为很多的表,
如 sgip_mt_log_200610,sgip_mt_log_200609 等
映射的对象只是sgip_mt_log 这个表
查询其它月份的表
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);

这样查询是可以的没有问题

但是如果加上条件
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 {sgip_mt_log.MTID} 就没有问题 where{sgip_mt_log.MTID}=1 就会出现问题哪
应该怎么解决 请解答

方便的话可以加我的MSN : evo_china@hotmail.com
...全文
689 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
evo_vii 2006-10-24
  • 打赏
  • 举报
回复
esprit0318(遥远的。。。AZA~~AZA~~FIGHTING......) 这位大哥 你来晚了
esprit0318 2006-10-23
  • 打赏
  • 举报
回复
学习,接分!
hqqiang 2006-10-23
  • 打赏
  • 举报
回复
sf!
evo_vii 2006-10-23
  • 打赏
  • 举报
回复
搞定了
原因在于,hibernate解析出的sql语句中,会自动为表中的列加上别名,如id会变为id0_0_。
可以使用生成后的别名来进行order by排序,
但并不能使用别名来进行where条件处理,参与条件运算的必须是实际的列名,而不能是别名。

67,512

社区成员

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

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