Hibernate多表查询问题!

wnhoo 2008-06-06 09:25:52
环境:
MSSQL+SP4
Hibernate 3.X
JDK 1.5

问题:
表 UserInfo,FlagInfo
视图 V_BuyGlide

1:查询视图,视图没有做映射

请教各位一个问题:
List result = null;
try {
Session s = HibernateSessionFactory.getSession();
Query q = s.createSQLQuery("Select * from V_BuyGlide");
result = q.list();
s.close();
} catch (Exception e) {
e.printStackTrace();
}
Hibernate: Select * from V_BuyGlide
09:02:32,953 ERROR JDBCExceptionReporter:72 - 对象名 'V_BuyGlide' 无效。

V_BuyGlide 数据库中视图,上面SQL语句在数据库中正常执行!但是为什么上面执行会报错呀!

2、返回表和视图的列
Select a.*,b.FlagName from V_BuyGlide a,FlagInfo b where a.BuyFlagID=b.FlagID

(1)怎么取得返回结果?
(2)如果要将结果映射成为POJO对象,怎么办?

3、查询统计值
Select Count(*) from V_BuyGlide

怎么取得统计的值?

4、数据库特有信息查询
Select getDate()

取得数据库所在服务器的时间,怎么弄?

...全文
229 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunyujia 2008-06-09
  • 打赏
  • 举报
回复
mihaisheng 已经回答了,其实有的视图你直接当成表映射成pojo就行了。
  • 打赏
  • 举报
回复
get**
mihaisheng 2008-06-08
  • 打赏
  • 举报
回复
Query sqlQuery=session.createSQLQuery("Select {v.*} from V_BuyGlide v");
sqlQuery.addEntity("s", StuBaseInfo.class);
sqlQuery.addEntity("e", Education.class);
List list=sqlQuery.list();
mihaisheng 2008-06-08
  • 打赏
  • 举报
回复
SQLQuery sqlQuery=session.createSQLQuery(sql);
sqlQuery.addEntity("s", StuBaseInfo.class);
sqlQuery.addEntity("e", Education.class);
List list=sqlQuery.list();
mihaisheng 2008-06-08
  • 打赏
  • 举报
回复
SQLQuery sqlQuery=session.createSQLQuery(sql);
sqlQuery.addEntity("s", StuBaseInfo.class);
sqlQuery.addEntity("e", Education.class);
sqlQuery.list();
wnhoo 2008-06-06
  • 打赏
  • 举报
回复
你到底懂不懂的,我不用视图,我用什么,难道将近200行左右查询,放在H中!

M_song 2008-06-06
  • 打赏
  • 举报
回复
建议你转换下思路,没必要用本地视图的方式!
wnhoo 2008-06-06
  • 打赏
  • 举报
回复
不是我不换HQL,是因为我数据库有N多表,视图,可能有N*M中表表、表视图方式组合查询,我不能每个都弄个映射吧!

并且H3.X 都是支持Native SQL 方式的,所以我想让各位如果有方法,指导一下!
M_song 2008-06-06
  • 打赏
  • 举报
回复
那你换hql吧!
M_song 2008-06-06
  • 打赏
  • 举报
回复
4,select getdate()
wnhoo 2008-06-06
  • 打赏
  • 举报
回复
感谢回答!

请注意,我使用的是Native SQL 方式!

并且那个错误是什么原因!
M_song 2008-06-06
  • 打赏
  • 举报
回复
1,视图要像实体类一样,做映射和get,set属性;
2,既然视图像实体类一样,那自然就有对应的pojo了;
3,同上;
4,每个数据库都有特定的,查一下;
SmileFaith 2008-06-06
  • 打赏
  • 举报
回复
用本地sql查询,结果得到的是Object[]的List,你得通过这个数组分别来取值并set到你的pojo对象中。
上面的2和3都是这种情况。
例如:
for (int i=0; i<list.size(); i++){
Object[] ob = (Object[])list.get(i);
String name = ob[0].toString();
pojo.setName(name);
}

67,538

社区成员

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

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