在dao 里public List findByTitles(String title){
String hql="from News as news where news.title like'%"+title+"%'";
List list=getHibernateTemplate().find(hql);
return list;
}用这个方法是没问题的,我想用sql语句实现.用public List findByTitles(String title){
String sql="select * from news where title like'%"+title+"%'";
Session session=getSession();
Transaction tx=session.beginTransaction();
Query qu=session.createSQLQuery(sql);
tx.commit();
List list=qu.list();
return list;
}方法时报错java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'news' 无效。
News.hbm.xml:
<hibernate-mapping>
<class name="org.imm.model.News" catalog="news" table="news" schema="dbo">
<id name="newsid" type="java.lang.Integer">
<column name="newid" ></column>
<generator class="native"></generator>
</id>
<property name="title" type="java.lang.String">
<column name="title" length="50"></column>
</property>
<property name="content" type="java.lang.String">
<column name="content" length="50"></column>
</property>
</class>
</hibernate-mapping>
请问怎么解决?
String hql="from News as news where news.title like'%"+title+"%'";
List list=getHibernateTemplate().find(hql);
return list;
}用这个方法是没问题的,我想用sql语句实现.用public List findByTitles(String title){
String sql="select * from news where title like'%"+title+"%'";
Session session=getSession();
Transaction tx=session.beginTransaction();
Query qu=session.createSQLQuery(sql);
tx.commit();
List list=qu.list();
return list;
}方法时报错java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'news' 无效。
News.hbm.xml:
<hibernate-mapping>
<class name="org.imm.model.News" catalog="news" table="news" schema="dbo">
<id name="newsid" type="java.lang.Integer">
<column name="newid" ></column>
<generator class="native"></generator>
</id>
<property name="title" type="java.lang.String">
<column name="title" length="50"></column>
</property>
<property name="content" type="java.lang.String">
<column name="content" length="50"></column>
</property>
</class>
</hibernate-mapping>
请问怎么解决?
//调用模板的execute方法,参数是实现了HibernateCallback接口的匿名类,
return (List) this.execute(new HibernateCallback(){
//重写其doInHibernate方法返回一个object对象,
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
//创建query对象
Query query=session.createSQLQuery("select * from table");
//返回其执行了分布方法的list
return query.list();
}
});
}
public List findGoodsByWarehouseSlotCode(String warehouseId,String slotCode){
log.debug("finding WmsStockSlot instance with property:warehouseId " + warehouseId
+ ", stockCode: " + slotCode);
try {
String queryString = "SELECT * FROM WMS_STOCK_SLOT ss,WMS_BASE_GOODS g,WMS_BASE_GOODS_STATUS s WHERE ss.STOCK_GOODS_ID=g.GOODS_ID AND ss.STOCK_GOODS_STATUS=S.GOODS_STATUS_ID AND ss.STOCK_WAREHOUSE_ID=? AND ss.STOCK_SLOT_CODE=?";
Query queryObject = getSession().createSQLQuery(queryString).addEntity("stockSlot",WmsStockSlot.class).addEntity("goods",WmsBaseGoods.class).addEntity("goodsStatus",WmsBaseGoodsStatus.class);
queryObject.setParameter(0, warehouseId);
queryObject.setParameter(1, slotCode);
return queryObject.list();
} catch (RuntimeException re) {
log.error("find by property name failed", re);
throw re;
}
}
String sql="form News n where n.title like'%"+title+"%'";
还有 别忘了关闭事务和session
String sql="select * from news where title like'%"+title+"%'";
Session session=getSession();
Transaction tx=session.beginTransaction();
Query qu=session.createSQLQuery(sql);
tx.commit(); //---放到后面去
List list=qu.list();
//tx.commit(); --放这里
return list;
}算了,我在写一遍
public List findByTitles(String title){
Session se= getSession();
List list=new ArrayList();
String sql="select * from news where title like '%"+title+"%'";
try{
Query qu=session.createSQLQuery(sql);
list=qu.list();
}catch(Exception e){
e.printStackTrace();
}finally{
se.close();//must close
return list;
}
}
做到有始有终
打开的东西给它关闭掉
Session必须的关,要不然运行个几十次,你电脑就不动了
哈哈
from news where title like'%"+title+"%'";
例如:
from CourseCatalog c where c.courseCatalogId in (select cc.courseCatalog.courseCatalogId from CourseCatalogPrivilege cc where cc.user.userId=:userId )
就我我帖出来的第一种方法,用hql查
但现在我想用纯sql查
所以才问的
//加载实体对象
Query query= sessss.createSQLQuery("select{cat.*}fromcatscat").addEntity("cat",Cat.class).list(); //条件是cat 返回值集合query属于SQL条件查询。你可以用BQC来完成条件查询 速度不次于SQL语句!!你使用的SQL语句可以配置在new.hbm.xml
<sql-query name = " persons " >
< return alias = " person " class = " eg.Person " />
Select person.NAME AS {person.name},person.AGE AS {person.age},person.SEX AS {person.sex} FROM PERSON person Where person.NAME LIKE :namePattern
</sql-query>
List people = sess.getNamedQuery( " persons " ).setString( " namePattern " , namePattern)
.setMaxResults( 50 )
.list();
Session se= getSession();
List list=new ArrayList();
String sql="select * from News n where n.title like '%"+title+"%'";
try{
Query qu=session.createSQLQuery(sql);
list=qu.list();
}catch(Exception e){
e.printStackTrace();
}finally{
se.close();//must close
return list;
}
}
注意类名,报的是hibernate找不到类名而已。。不关SQL的事。
我记得schema和catalog都得加上
光加dbo是不够的 再把数据库名加上
Criteria criteria=getSession().createCriteria(类名.class);
criteria.add(Expression.eq("lkmCustName", lkmCustName));
criteria.add(Expression.eq("lkmName", lkmName));
List<类名> list=criteria.list();
if(list.size()==0){
return null;
}
类名 cstLinkman=list.get(0);
return cstLinkman;
}
这个我也试过了,报错java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'dbo.news.news' 无效。
String sql="select * from news where title like'%"+title+"%'";
Session session=getSession();
Transaction tx=session.beginTransaction();
Query qu=session.createSQLQuery(sql);
List list=qu.list(); for(Iterator iter = list.iterator(); iter.hasNext();){
Object [] obj = (Object[])iter.next();
<!-- obj[0],obj[1],obj[2],分别代表这个表的前三个字段-->
System.out.println(obj[0] + " " + obj[1] + " " +obj[2]);
}这样遍历一下看看会会不错 反正我的电脑没出毛病