要用HQL 呀,,兄弟,,Hibernate是可以用SQL但不是这样用的把,, 你的这一句有问题呀 String sql = "select * from teacher as t,classroom as cl,course as co where t.tea_id = 't001'"+" and cl.tea_id = t.tea_id and cl.cou_id = co.cou_id"; 应当是 String sql = "from teacher as t,classroom as cl,course as co where t.tea_id = 't001'"+" and cl.tea_id = t.tea_id and cl.cou_id = co.cou_id"; 就可以了,,
public List findUseSQL (){ List list = null; Transaction tx = null; Session session = sessionFactory.openSession();
tx = session.beginTransaction(); String sql = "from mypack.customers as c,mypack.orders as o where c.id = o.customer_id"; SQLQuery sqlQuery = session.createSQLQuery(sql); list = sqlQuery.list(); System.out.println(list.size()); tx.commit(); return list; }
我的代码报了这个错 addEntity() or addScalar() must be called on a sql query before executing the query. [from mypack.customers as c,mypack.orders as o where c.id = o.customer_id]sql语句没有错,代码那有问题?
这个是执行的hql语句,你首先要把你的那句sql转换成hql才能执行
createQuery方法只认hql,要用sql的话1楼的方法可以执行。
你的这一句有问题呀
String sql = "select * from teacher as t,classroom as cl,course as co where t.tea_id = 't001'"+" and cl.tea_id = t.tea_id and cl.cou_id = co.cou_id";
应当是
String sql = "from teacher as t,classroom as cl,course as co where t.tea_id = 't001'"+" and cl.tea_id = t.tea_id and cl.cou_id = co.cou_id";
就可以了,,
[email protected]我给你发个,,
建议好好的看下HQL查询语言
.add(Expression.eq("tea_id","t001"));你的每个表的id必须是hibernate承认的吧,就是说至少要让hibernate知道表的id字段是tea_id
public List findUseSQL (){
List list = null;
Transaction tx = null;
Session session = sessionFactory.openSession();
tx = session.beginTransaction();
String sql = "from mypack.customers as c,mypack.orders as o where c.id = o.customer_id";
SQLQuery sqlQuery = session.createSQLQuery(sql);
list = sqlQuery.list();
System.out.println(list.size());
tx.commit();
return list;
}
我的代码报了这个错
addEntity() or addScalar() must be called on a sql query before executing the query. [from mypack.customers as c,mypack.orders as o where c.id = o.customer_id]sql语句没有错,代码那有问题?