Hibernate多表、多视图查询问题!

wnhoo 2008-06-06 10:27:32
环境:
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()

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

...全文
188 点赞 收藏 10
写回复
10 条回复
ee4456 2008年06月06日

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

对象名无效,那么你有对应的pojo吗?有没有配置这个视图的对象V_BuyGlide

2.要返回指定的行列
如果你返回的没有对应的POJO,那么你得到的每一行的直都是一个object[]的对象数组,你可以一个一个转回来到
你所知道的相应的类型

3.统计函数要写个指定的值
跟第2个问题差不多,只不过上边是多个那么就是object[],也是返回的list中,每个元素都是object[].那么相对的这个count(*)就明显是一个object了,那么你再把这个对象转成你想要的数据就OK了

4.获取服务器的时间 new java.util.Date();就可以
回复 点赞
bufeng711 2008年06月06日
1.首先查询视图跟查询表的一样的,没什么区别,你只要生成对应的视图映射就行。
2.要返回指定的行列,就要自己重新写个POJO类,这个类里面包含你要显示的列
具体写法 select (com.csdn.newBean) from V_BuyGlide a,FlagInfo b where a.BuyFlagID=b.FlagID
这个com.csdn.newBean 里面包含a里面的的所有变量和b里面的b.FlagName,等价于a.*,b.FlagName
public Class newBean
{
private a的变量;
private FlagName;
get....set...
}
hql语法跟sql还是有很大的区别滴

3.统计函数要写个指定的值
Session session = HibernateSessionFactory.getSession();
countStr = "select count(*) from V_BuyGlide" ;
Query query = session.createQuery(countStr);
return Integer.valueOf(query.list().get(0).toString());//返回的就是你想要的count(*)

4.获取服务器的时间 new java.util.Date();
回复 点赞
qingting2016 2008年06月06日
1:查询视图,视图没有做映射

//视图也需做映射 采用复合主键方式
回复 点赞
qingting2016 2008年06月06日
query.getString("列名");

跟jdbc差不多,
回复 点赞
jdlsfl 2008年06月06日
1、09:02:32,953 ERROR JDBCExceptionReporter:72 - 对象名 'V_BuyGlide' 无效。
这个可能是没有映射实体类吧
回复 点赞
jdlsfl 2008年06月06日
3、已经得到统计值了啊
回复 点赞
jdlsfl 2008年06月06日
4、select convert(char(10),getdate(),20) sdate,convert(char(8),getdate(),108) stime
回复 点赞
yami251139 2008年06月06日
sysDate吧好像
不过我一般用currenttime...
回复 点赞
zidasine 2008年06月06日
视图也需要做映射,有对应的pojo
回复 点赞
发动态
发帖子
Java EE
创建于2007-09-28

3.7w+

社区成员

22.5w+

社区内容

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区公告
暂无公告