public int save(final String[] str){
return (Integer) getHibernateTemplate().execute(new HibernateCallback(){ public Object doInHibernate(Session session) throws HibernateException, SQLException {
Query query=session.createQuery("insert into UserInfo(username,password,email) values(?,?,?)");
for(int i=0;i<str.length;i++){
query.setParameter(i, str[i]);
}
return query.executeUpdate();
}

});
}
这句Query query=session.createQuery("insert into UserInfo(username,password,email) values(?,?,?)")能否这样写?
帮帮忙,急!!!

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【cjh122522136】截止到2008-07-05 14:54:55的历史汇总数据(不包括此帖):
    发帖的总数量:0                        发帖的总分数:0                        
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:---------------------结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   


    getHibernateTemplate().save(object)就可以了啊,为什么还要用insert呢。
      

  3.   

    hibernate3 可以 写入语句后 用createQuery 的一个update 方法
      

  4.   

    你为什么要这样子写呢,我直接保存下对象sava(Object object)就行了
      

  5.   


    可以直接用save方法实现啊为什么要绕远路
      

  6.   

    createQuery语句根本不能那么写
      

  7.   

    直接SET不是更好!从来没在HIBERNATE里面用过INSERT,不过肯定是支持的
      

  8.   

    记得以前试过hibernate2,Query 语句不成,但可以写成SQLQuery 
      

  9.   

     你可以用最简单的方法呀    那就是直接save呀
      

  10.   

    save就可以了,Hibernate自身提供了几个简单的操作,看看手册就知道了
      

  11.   

    insert 语句怎么写到 Query 里面来啦。可以的吗???
      

  12.   

    你们楼上这些人,人家既然这样写肯定是有这方面的需求,肯定是有特殊情况啊!非要人家save对象,知之为知之,不知为不知,何必要大家和讽刺人家呢!
      

  13.   

    可以直接用save方法实现啊为什么要绕远路
      

  14.   

    楼主这样写 insert into UserInfo(username,password,email) values(?,?,?)  应该要个构造方法 UserInfo(username,password,email) 
      

  15.   

    如果使用对象进行操作的用createQuery
    如果用SQL操作的用createSQLQuery
      

  16.   

    createSQLQuery应该可以~~你这样写不行,直接save(object)
      

  17.   

    hibernate就是把关系转换成对象来操作,用insert就失去了hibernate的意义。
      

  18.   

    可以啊,session.connection()回归纯天然JDBC操作,哈哈
    session.createSQLQuery()还是离不开对象操作。
    session.createQuery(...HQL语句...),当然不能出现数据库的东西了,因为HQL是面向对象的查询语句。
    不明白LZ为什么会问这样的问题?
      

  19.   

    不可以,你如果那样写就成了原生sql语句,然而,你如果要用原生sql语句,那么,操作并不是和jdbc的sql语句一样的,它在查询时还要把对象的属性加上去。
      

  20.   

    别人要实现的方法是hibernate本身不自带的方法,你 save(),有个什么用?
    我现在也在做SSH项目  所有方法都是自己用hql写  ,麻烦死
      

  21.   

    哪位高手说明白一点可以吗!!!小弟也是刚弄这!!感觉比ASP.NET 复杂多了!!
    烦啊!!!!
      

  22.   

    直接把HQL轉化成SQL語句就可以像LZ那樣進行添加了。
    HIBERNATE可以轉
      

  23.   

    一般都是使用createSQLQuery()这个方法实现。
    我有个疑问怎么将hibernate生成的sql语句写到数据库呢??
    正在解决中
      

  24.   

    直接引用save吧
    j2ee技术群:24739115
      

  25.   

    用Hql也有好处。当你要对多个表进行插入时一条Hql就可解决了,如果你用Hibernate里面的save那样只会降低了性能。
      

  26.   

    一般是 insert into DelinquentAccount (id, name) select c.id, c.name from Customer c where ..." 这么写的。hql 只支持INSERT INTO ... SELECT ...形式,不支持INSERT INTO ... VALUES ...形式.
      

  27.   

    楼主应该是考虑性能测试,save和hql都能实现,hql估计不能关联插入。
      

  28.   

    用 save挺好的直接插入了就
      

  29.   

    那么多人说了半天都没有解决楼主所提问题,我来直接回复楼主吧:
    使用HQL语句来完成插入操作是不能实现的,不管你使用insert into....values...还是insert into.....select.....都不行原因:因为Hibernate的HQL语言是用于面向对象实现查询功能的,然而在插入操作中是不会牵涉任何查询动作的,所以HQL不能用于insert语句的插入操作,而select、update、delete语句都可以有可能的查询实现,比如:select语句时标准的查询,这个就不用再说了
    update语句:update 对象名 set.....where......
    delete语句:delete from 对象名 where .....
    看到了没有,update与delete牵涉到where的查询筛选过程,这个过程是需要采用HQL来实现的,然而insert永远牵涉不到查询筛选过程,所以Hibernate没有对插入做insert实现搞不懂为什么有那么多人说可以,说着这句话的人请你们动动脑子,如果不想动脑子自己动手试一下也可以看出问题嘛,不要张开嘴就乱说一通,误人子弟。
      

  30.   

    楼主是想写个批量插入数据,而且不想用hibernate的save来操作,因为save来操作这里是很麻烦的,因为save只能保存一个对像,要是这个对像过多的话,而且每个对像的数据都有所不一样,用save就每花大量的时间来处理对像了,所以还不如直接来操作数据库,所以会想到用insert into来解决这问题。不过hibernate hql不支持这种insert 就像上楼说的那样。
    个人建议用事务来处理,用SQLQuery 原生态sql来写这里,就能解决你的问题了
    SQLQuery query=session.createSQLQuery("insert into youtable (username,password,email) values(?,?,?)");
      

  31.   

    insert是可以用的,如果想要用sql
    可以session.createSQLQuery("insert into ...")
      

  32.   

    说下我的意见,hibernate 的(Hql)一些对对象方法不是所有的都可以实现的,例如:多表之间的查询,而且各表之间又有关系,而且要的数据也很复杂!这里用hibernate 封装好的对对象使用的方法,根本没有办法实现,这时就会用的 sql语句来完成,用到Hbiernate的 createSQLQuery()来实现,不过此方法查询回来的结果,类型需要转换,才方便使用  返回的类型是 List<Object[]> 的类型,取的时候循环遍历 取值。可以放在自己预定好的Vo类中!为方法显示!     
      

  33.   

    否试过,一般都是用save(xxxx);