sql是更新一个字段的update 语句:
SQLQuery sQLQuery=sess.createSQLQuery(sql);
sQLQuery.executeUpdate();
用这个不行.
请问怎么实现??
27 个解决方案
#1
saveOrUpdate方法
#2
关健是我想执行我写的sql语句
#3
没人帮忙啊??
#4
我也碰到这样的问题?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
应该如何写 请大家帮忙 我可以给分的
//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
应该如何写 请大家帮忙 我可以给分的
#5
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);
}
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);
}
#6
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;
}
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;
}
#7
Hibernage中不是有个
session.update(Object object) 吗?
session.update(Object object) 吗?
#8
@windyt() :
=================
你这里是find的查询语句, 你尝试着写一些delete from *** 这样的update的sql语句看能不能执行?
=================
你这里是find的查询语句, 你尝试着写一些delete from *** 这样的update的sql语句看能不能执行?
#9
hibernate都是执行hql语句,再给你找找
#10
在native SQL里,每个字段的类型(HibernateType)都必须被定义
参考org.hibernate.SQLQuery接口
参考org.hibernate.SQLQuery接口
#11
楼主写那两句看不出来错,请给更多代码和出错信息.
#12
如果你没有Mapping Object的话 那是没指望了
自己把这个方法改成JDBC方式吧
自己把这个方法改成JDBC方式吧
#13
哦,是哦。直接用SqlQuery好像不能直接执行 增 删 改 操作,不过,我找了一下,下面的方法可以的。
trans = session.beginTransaction();
Connection conn = session.connection();
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.executeUpdate();
stmt.execute();
trans.commit();
trans = session.beginTransaction();
Connection conn = session.connection();
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.executeUpdate();
stmt.execute();
trans.commit();
#14
如果您不愿意用saveOrUpdate()或update()方法,我想只有楼上windyt的方法了。
#15
5楼正解 老大 hibernate最好对对象进行操作
hibernate你还玩sql?不是吧 那你用hibernate还有什么含义!!!
hibernate你还玩sql?不是吧 那你用hibernate还有什么含义!!!
#16
hibernate 可以直接用sql,
如果直接用sql需要返回实体,可以直接指定对应的应体,
用sql与用对象操作是hibernate的一个对jdbc系统转移到hibernate时的一个功能.
非常不错
如果直接用sql需要返回实体,可以直接指定对应的应体,
用sql与用对象操作是hibernate的一个对jdbc系统转移到hibernate时的一个功能.
非常不错
#17
15楼此话差矣,对于有些复杂的查询是无法用hql的,只能用sql来处理
#18
trans = session.beginTransaction();
trans.begin();
SQLQuery sQLQuery=session.createSQLQuery(sql);
sQLQuery.executeUpdate();
trans.commit();
#19
hql是面向对象的
#20
SQLQuery sQLQuery=session.createSQLQuery(sql);
sQLQuery.executeUpdate();
sQLQuery.executeUpdate();
#21
+1
#22
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=?
”又进行不下去了,这个新问题怎么解决?
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=?
”又进行不下去了,这个新问题怎么解决?
#23
executeUpdate()如果我没记错的话,它好像只能进行查询,对于删除、修改、新增都没用吧!
#24
解决办法很简单,在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();
<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();
#25
解决办法很简单,在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();
<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();
#26
你这样写应该是可以update的,创建的就是SQL不是HQL。 是不是其他什么出了问题
#27
没有提交事务吧。
#1
saveOrUpdate方法
#2
关健是我想执行我写的sql语句
#3
没人帮忙啊??
#4
我也碰到这样的问题?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
应该如何写 请大家帮忙 我可以给分的
//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
应该如何写 请大家帮忙 我可以给分的
#5
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);
}
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);
}
#6
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;
}
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;
}
#7
Hibernage中不是有个
session.update(Object object) 吗?
session.update(Object object) 吗?
#8
@windyt() :
=================
你这里是find的查询语句, 你尝试着写一些delete from *** 这样的update的sql语句看能不能执行?
=================
你这里是find的查询语句, 你尝试着写一些delete from *** 这样的update的sql语句看能不能执行?
#9
hibernate都是执行hql语句,再给你找找
#10
在native SQL里,每个字段的类型(HibernateType)都必须被定义
参考org.hibernate.SQLQuery接口
参考org.hibernate.SQLQuery接口
#11
楼主写那两句看不出来错,请给更多代码和出错信息.
#12
如果你没有Mapping Object的话 那是没指望了
自己把这个方法改成JDBC方式吧
自己把这个方法改成JDBC方式吧
#13
哦,是哦。直接用SqlQuery好像不能直接执行 增 删 改 操作,不过,我找了一下,下面的方法可以的。
trans = session.beginTransaction();
Connection conn = session.connection();
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.executeUpdate();
stmt.execute();
trans.commit();
trans = session.beginTransaction();
Connection conn = session.connection();
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.executeUpdate();
stmt.execute();
trans.commit();
#14
如果您不愿意用saveOrUpdate()或update()方法,我想只有楼上windyt的方法了。
#15
5楼正解 老大 hibernate最好对对象进行操作
hibernate你还玩sql?不是吧 那你用hibernate还有什么含义!!!
hibernate你还玩sql?不是吧 那你用hibernate还有什么含义!!!
#16
hibernate 可以直接用sql,
如果直接用sql需要返回实体,可以直接指定对应的应体,
用sql与用对象操作是hibernate的一个对jdbc系统转移到hibernate时的一个功能.
非常不错
如果直接用sql需要返回实体,可以直接指定对应的应体,
用sql与用对象操作是hibernate的一个对jdbc系统转移到hibernate时的一个功能.
非常不错
#17
15楼此话差矣,对于有些复杂的查询是无法用hql的,只能用sql来处理
#18
trans = session.beginTransaction();
trans.begin();
SQLQuery sQLQuery=session.createSQLQuery(sql);
sQLQuery.executeUpdate();
trans.commit();
#19
hql是面向对象的
#20
SQLQuery sQLQuery=session.createSQLQuery(sql);
sQLQuery.executeUpdate();
sQLQuery.executeUpdate();
#21
+1
#22
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=?
”又进行不下去了,这个新问题怎么解决?
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=?
”又进行不下去了,这个新问题怎么解决?
#23
executeUpdate()如果我没记错的话,它好像只能进行查询,对于删除、修改、新增都没用吧!
#24
解决办法很简单,在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();
<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();
#25
解决办法很简单,在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();
<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();
#26
你这样写应该是可以update的,创建的就是SQL不是HQL。 是不是其他什么出了问题
#27
没有提交事务吧。