怎么在hibernate 中执行一个update的sql语句? 关健是我想执行我写的sql语句 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我也碰到这样的问题?public void sjbmbupdate(DbXtwhSjbmb sjbm){ //DbXtwhSjbmb sjbm=new DbXtwhSjbmb(); try{ String hsql="update DbXtwhSjbmb as a " +"set a.ac002='" +sjbm.getAc002() +"',a.ac003='" +sjbm.getAc003() +"',a.ac004='" +sjbm.getAc004()+"' " +"where a.ac001='00'"; System.out.println("java hsql report ; "+hsql); getHibernateTemplate().update(hsql); //etHibernateTemplate().update(sjbm); System.out.println("java hsql report : successful"); }catch(Exception e){ System.out.println(e); } }--------------------------------------------------------------java hsql report ; update DbXtwhSjbmb as a set a.ac002='管理平台',a.ac003='0003',a.ac004='000000' where a.ac001='00'org.springframework.orm.hibernate3.HibernateSystemException: Unknown entity: java.lang.String; nested exception is org.hibernate.MappingException: Unknown entity: java.lang.String应该如何写 请大家帮忙 我可以给分的 public void sjbmbupdate(String a){List list = (List)this.getHibernateTemplate().find("from DbXtwhSjbmb where ac001=?",a);DbXtwhSjbmb sjbm = (DbXtwhSjbmb )list.get(0);sjbm.setAc002("管理平台者");sjbm.setAc003("0003");...this.getHibernateTemplate().update(sjbm);} To: ok60000 () public Collection findBySQL(String sql){ Session session = null; Transaction tran = null; Collection list = null; try { session = sessionFactory.openSession(); tran = session.beginTransaction(); SQLQuery sq = session.createSQLQuery(sql); sq.addEntity(Student.class); list = sq.list(); tran.commit(); } catch (HibernateException e) { e.printStackTrace(); tran.rollback(); }finally{ if(session!=null) session.close(); } return list;} Hibernage中不是有个session.update(Object object) 吗? @windyt() :=================你这里是find的查询语句, 你尝试着写一些delete from *** 这样的update的sql语句看能不能执行? hibernate都是执行hql语句,再给你找找 在native SQL里,每个字段的类型(HibernateType)都必须被定义参考org.hibernate.SQLQuery接口 如果你没有Mapping Object的话 那是没指望了自己把这个方法改成JDBC方式吧 哦,是哦。直接用SqlQuery好像不能直接执行 增 删 改 操作,不过,我找了一下,下面的方法可以的。trans = session.beginTransaction();Connection conn = session.connection();PreparedStatement stmt = conn.prepareStatement(sql);stmt.executeUpdate();stmt.execute();trans.commit(); 如果您不愿意用saveOrUpdate()或update()方法,我想只有楼上windyt的方法了。 5楼正解 老大 hibernate最好对对象进行操作 hibernate你还玩sql?不是吧 那你用hibernate还有什么含义!!! hibernate 可以直接用sql,如果直接用sql需要返回实体,可以直接指定对应的应体,用sql与用对象操作是hibernate的一个对jdbc系统转移到hibernate时的一个功能.非常不错 15楼此话差矣,对于有些复杂的查询是无法用hql的,只能用sql来处理 trans = session.beginTransaction();trans.begin();SQLQuery sQLQuery=session.createSQLQuery(sql);sQLQuery.executeUpdate(); trans.commit(); SQLQuery sQLQuery=session.createSQLQuery(sql);sQLQuery.executeUpdate(); 5楼说的对,我也采用了他的方法,可是新问题出现 了,这样做需要对这条记录的所有字段进行update,就是:“sjbm.setAc002( "管理平台者 "); sjbm.setAc003( "0003 "); . . .”程序到了这:“Hibernate: update User1 set address=?, age=?, email=?, gradeId=?, isOnline=?, latestDate=?, nickName=?, passwd=?, passwdAnswer=?, passwdQuestion=?, phone=?, point=?, provinceCity=?, referrer=?, registerDate=?, sex=?, status=? where id=?”又进行不下去了,这个新问题怎么解决? executeUpdate()如果我没记错的话,它好像只能进行查询,对于删除、修改、新增都没用吧! 解决办法很简单,在hibernate映射文件中加入节点<sql-query>,如:<sql-query name="testQuery"> insert into t_d_test values('1','1')</sql-query>在程序中先获取到这个sql,然后执行就行了,如:String sql = session.getNamedQuery("testQuery").getQueryString();Query query = session.createSQLQuery(sql);query.executeUpdate(); 解决办法很简单,在hibernate映射文件中加入节点<sql-query>,如:<sql-query name="testQuery"> insert into t_d_test values('1','1')</sql-query>在程序中先获取到这个sql,然后执行就行了,如:String sql = session.getNamedQuery("testQuery").getQueryString();Query query = session.createSQLQuery(sql);query.executeUpdate(); 你这样写应该是可以update的,创建的就是SQL不是HQL。 是不是其他什么出了问题 用cookie实现最近浏览记录的问题? 二维数组求方差问题? 小弟不求代码,只为。。。。。。。。 jsp 比较时间 Hibernate的问题 ssh架构,取出时间如何格式化? 学web service 需要什么基础 这是什么问题?cmp 使用标准SAX解析XML文档如何获取文档编码信息及约束它的dtd文件路径. 请问现在用Hibernate是用xml配置的多还是Annotation的多呢? 求救 javax.servlet.ServletException: Original response not available 解决不了 关于JMF 有些问题想求教
//DbXtwhSjbmb sjbm=new DbXtwhSjbmb();
try{
String hsql="update DbXtwhSjbmb as a "
+"set a.ac002='"
+sjbm.getAc002()
+"',a.ac003='"
+sjbm.getAc003()
+"',a.ac004='"
+sjbm.getAc004()+"' "
+"where a.ac001='00'";
System.out.println("java hsql report ; "+hsql);
getHibernateTemplate().update(hsql);
//etHibernateTemplate().update(sjbm);
System.out.println("java hsql report : successful");
}catch(Exception e){
System.out.println(e);
}
}
--------------------------------------------------------------
java hsql report ; update DbXtwhSjbmb as a set a.ac002='管理平台',a.ac003='0003',a.ac004='000000' where a.ac001='00'
org.springframework.orm.hibernate3.HibernateSystemException: Unknown entity: java.lang.String; nested exception is org.hibernate.MappingException: Unknown entity: java.lang.String
应该如何写 请大家帮忙 我可以给分的
List list = (List)this.getHibernateTemplate().find("from DbXtwhSjbmb where ac001=?",a);
DbXtwhSjbmb sjbm = (DbXtwhSjbmb )list.get(0);
sjbm.setAc002("管理平台者");
sjbm.setAc003("0003");
.
.
.
this.getHibernateTemplate().update(sjbm);
}
Session session = null;
Transaction tran = null;
Collection list = null;
try {
session = sessionFactory.openSession();
tran = session.beginTransaction();
SQLQuery sq = session.createSQLQuery(sql);
sq.addEntity(Student.class);
list = sq.list();
tran.commit();
} catch (HibernateException e) {
e.printStackTrace();
tran.rollback();
}finally{
if(session!=null)
session.close();
}
return list;
}
session.update(Object object) 吗?
=================
你这里是find的查询语句, 你尝试着写一些delete from *** 这样的update的sql语句看能不能执行?
Connection conn = session.connection();
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.executeUpdate();
stmt.execute();
trans.commit();
hibernate你还玩sql?不是吧 那你用hibernate还有什么含义!!!
如果直接用sql需要返回实体,可以直接指定对应的应体,
用sql与用对象操作是hibernate的一个对jdbc系统转移到hibernate时的一个功能.
非常不错
trans = session.beginTransaction();
trans.begin();
SQLQuery sQLQuery=session.createSQLQuery(sql);
sQLQuery.executeUpdate();
trans.commit();
sQLQuery.executeUpdate();
sjbm.setAc002( "管理平台者 ");
sjbm.setAc003( "0003 ");
.
.
.”
程序到了这:“Hibernate: update User1 set address=?, age=?, email=?, gradeId=?, isOnline=?, latestDate=?, nickName=?, passwd=?, passwdAnswer=?, passwdQuestion=?, phone=?, point=?, provinceCity=?, referrer=?, registerDate=?, sex=?, status=? where id=?
”又进行不下去了,这个新问题怎么解决?
<sql-query name="testQuery">
insert into t_d_test values('1','1')
</sql-query>
在程序中先获取到这个sql,然后执行就行了,如:
String sql = session.getNamedQuery("testQuery").getQueryString();
Query query = session.createSQLQuery(sql);
query.executeUpdate();
<sql-query name="testQuery">
insert into t_d_test values('1','1')
</sql-query>
在程序中先获取到这个sql,然后执行就行了,如:
String sql = session.getNamedQuery("testQuery").getQueryString();
Query query = session.createSQLQuery(sql);
query.executeUpdate();