怎样在hibernate里面使用原生SQL
select (select min(sporttime) from Psport)+level-1 from dual connect by level<=trunc(sysdate)-(select min(sporttime) from Psport)+1 minus select sporttime from Psport where pid ="+pid+"";sportime--------DATE
pid------------VARCHAR2
这是我的SQL语句 在MyEclipse中报
line 1:71: unexpected token: by
求各位大神 给解答一下 或者 给变成HQL 能在hibernate里面运行的~! --------------------编程问答--------------------
--------------------编程问答-------------------- 呃,我看错题意了。把我忽略 --------------------编程问答-------------------- 不可以直接使用sql吗? SQLQuery query=session.createSQLQuery(sql).addEntity(Psport.clasee);
sql="";
session.createSQLQuery(sql).list();
就可以 取的时候和hql一样。
--------------------编程问答-------------------- 底层已经搭建好不能动了~~! --------------------编程问答-------------------- 你们的项目大吗?
个人感觉hibernate不够灵活,改成MyBatis会好些,所有SQL必须手写,这样性能更高。 --------------------编程问答-------------------- 你先看你的sql在你数据库中能执行不,如果能的话在Hibernate中基本也行。不过要用SQLQuery 这个接口。 --------------------编程问答--------------------
--------------------编程问答-------------------- --------------------编程问答--------------------
public boolean insetInfo(final UserBean userBean,final int[] depIds) throws Exception {
// TODO Auto-generated method stub
List list= (List)getHibernateTemplate().executeFind(new HibernateCallback(){
public Object doInHibernate(Session session)
throws HibernateException, SQLException{
for (int i = 0 ; i < depIds.length ; i++)
{
String sql ="insert into tbl_user_dep (userId,depId) values(?,?)";
Query query= session.createSQLQuery(sql);
query.setParameter( 0, userBean.getUserId());
query.setParameter( 1, depIds[i]);
query.executeUpdate();
session.flush();
session.clear();
}
Object o = null;
return o;
}
});
return true;
}
session 是哪个包里的 --------------------编程问答-------------------- hibernate文档,使用native SQL --------------------编程问答-------------------- --------------------编程问答-------------------- HQL不行? --------------------编程问答-------------------- 你的数据库版本是否支持嵌套查询 --------------------编程问答-------------------- session 是org.hibernate.XX提供的
补充:Java , Web 开发