由于hibernate对sql的二次封装,使部分复杂的查询语句不能被执行,我列举两种解决方法,和大家讨论!
第一种:查询结果集
session session = this.getsession();
list result = new arraylist();
string strsql = "select buy.isbn,buy.bookname,buy.bookengname,count(*) as counum from (select distinct usee.isbn from stubasicinfo stu,teachingmaterialuse usee ";
strsql = strsql
+ " where stu.identityid = usee.identityid and stu.deptid = '"
+ banji + "' and usee.academicyearcode='" + xn
+ "' and usee.semestercode = '" + xq
+ "') ddd,teachingmaterialbuyinto buy,teachingmaterialuse usee ";
strsql = strsql
+ "where usee.isbn= ddd.isbn and usee.isbn= buy.isbn group by buy.isbn,buy.bookname,buy.bookengname";
system.out.println(strsql);
try
{
connection con = session.connection();
statement statement = con.createstatement(resultset.type_scroll_insensitive,resultset.concur_read_only);
resultset rs = statement.executequery(strsql);
if (rs.next()) {
while (!rs.isafterlast()) {
list templist = new arraylist();
templist.add(rs.getstring("isbn"));
templist.add(rs.getstring("bookname"));
templist.add(rs.getstring("bookengname"));
templist.add(rs.getstring("counum"));
result.add(templist);
rs.next();
}
}
}catch (sqlexception e)
{
system.out.println("----" + e);
}
catch (hibernateexception e)
{
system.out.println("----" + e);
}
finally
{
this.closesessionifnecessary(session);
}
session session = this.getsession();
int acount = 0;
try
{
string sqltext = "select count(*) from classroominfo room where room.flag='1' and room.type='"
+ usertype + "' ";
if ((name != null) && ((name != "null")))
{
sqltext = sqltext + " and room.name like '%" + name + "%' ";
}
else if ((buildingcode != null) && ((buildingcode != "null")))
{
sqltext = sqltext + " and room.buildingcode like '%"
+ buildingcode + "%' ";
}
else if ((dept != null) && ((dept != "null")))
{
sqltext = sqltext + " and room.deptid ='" + dept + "' ";
}
acount = ((integer) session.iterate(sqltext).next()).intvalue();
}
catch (hibernateexception e)
{
system.out.println("hibernateexception" + e);
}
finally
{
this.closesessionifnecessary(session);
}
return acount;
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器