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(?,?,?)")能否这样写?
帮帮忙,急!!!
47 个解决方案
#1
#2
可以啊
#3
createSQLQuery 试试
#4
LZ真无聊。。。。。飘过 。。。。。。。。。。。。。!
#5
getHibernateTemplate().save(object)就可以了啊,为什么还要用insert呢。
#6
hibernate3 可以 写入语句后 用createQuery 的一个update 方法
#7
你为什么要这样子写呢,我直接保存下对象sava(Object object)就行了
#8
可以直接用save方法实现啊。。。为什么要绕远路。。。
#9
createQuery语句根本不能那么写
#10
恩,这样好的很
#11
直接SET不是更好!从来没在HIBERNATE里面用过INSERT,不过肯定是支持的
#12
可以试一下呀,
#13
记得以前试过hibernate2,Query 语句不成,但可以写成SQLQuery
#14
#15
你可以用最简单的方法呀
那就是直接save呀
那就是直接save呀
#16
up
#17
save就可以了,Hibernate自身提供了几个简单的操作,看看手册就知道了
#18
insert 语句怎么写到 Query 里面来啦。可以的吗???
#19
你们楼上这些人,人家既然这样写肯定是有这方面的需求,肯定是有特殊情况啊!非要人家save对象,知之为知之,不知为不知,何必要大家和讽刺人家呢!
#20
可以直接用save方法实现啊。。。为什么要绕远路。。。
#21
楼主这样写 insert into UserInfo(username,password,email) values(?,?,?) 应该要个构造方法 UserInfo(username,password,email)
#22
如果使用对象进行操作的用createQuery
如果用SQL操作的用createSQLQuery
如果用SQL操作的用createSQLQuery
#23
。。。
#24
createSQLQuery应该可以~~你这样写不行,直接save(object)
#25
hibernate就是把关系转换成对象来操作,用insert就失去了hibernate的意义。
#26
可以啊,session.connection()回归纯天然JDBC操作,哈哈
session.createSQLQuery()还是离不开对象操作。
session.createQuery(...HQL语句...),当然不能出现数据库的东西了,因为HQL是面向对象的查询语句。
不明白LZ为什么会问这样的问题?
session.createSQLQuery()还是离不开对象操作。
session.createQuery(...HQL语句...),当然不能出现数据库的东西了,因为HQL是面向对象的查询语句。
不明白LZ为什么会问这样的问题?
#27
不可以,你如果那样写就成了原生sql语句,然而,你如果要用原生sql语句,那么,操作并不是和jdbc的sql语句一样的,它在查询时还要把对象的属性加上去。
#28
可以
#29
别人要实现的方法是hibernate本身不自带的方法,你 save(),有个什么用?
我现在也在做SSH项目 所有方法都是自己用hql写 ,麻烦死
我现在也在做SSH项目 所有方法都是自己用hql写 ,麻烦死
#30
哪位高手说明白一点可以吗!!!小弟也是刚弄这!!感觉比ASP.NET 复杂多了!!
烦啊!!!!
烦啊!!!!
#31
直接把HQL轉化成SQL語句就可以像LZ那樣進行添加了。。。。
HIBERNATE可以轉
HIBERNATE可以轉
#32
一般都是使用createSQLQuery()这个方法实现。
我有个疑问怎么将hibernate生成的sql语句写到数据库呢??
正在解决中
我有个疑问怎么将hibernate生成的sql语句写到数据库呢??
正在解决中
#33
直接引用save吧
j2ee技术群:24739115
j2ee技术群:24739115
#34
直接操作对象就ok了,你不用的属性为空就行了啊
#35
朋友我好像看到你提的問題有人發貼~~這個不好弄
#36
用Hql也有好处。当你要对多个表进行插入时一条Hql就可解决了,如果你用Hibernate里面的save那样只会降低了性能。
#37
一般是 insert into DelinquentAccount (id, name) select c.id, c.name from Customer c where ..." 这么写的。hql 只支持INSERT INTO ... SELECT ...形式,不支持INSERT INTO ... VALUES ...形式.
#38
楼主应该是考虑性能测试,save和hql都能实现,hql估计不能关联插入。
#39
不可以...
#40
用 save挺好的直接插入了就
#41
那么多人说了半天都没有解决楼主所提问题,我来直接回复楼主吧:
使用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实现
搞不懂为什么有那么多人说可以,说着这句话的人请你们动动脑子,如果不想动脑子自己动手试一下也可以看出问题嘛,不要张开嘴就乱说一通,误人子弟。
使用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实现
搞不懂为什么有那么多人说可以,说着这句话的人请你们动动脑子,如果不想动脑子自己动手试一下也可以看出问题嘛,不要张开嘴就乱说一通,误人子弟。
#42
楼主是想写个批量插入数据,而且不想用hibernate的save来操作,因为save来操作这里是很麻烦的,因为save只能保存一个对像,要是这个对像过多的话,而且每个对像的数据都有所不一样,用save就每花大量的时间来处理对像了,所以还不如直接来操作数据库,所以会想到用insert into来解决这问题。不过hibernate hql不支持这种insert 就像上楼说的那样。
个人建议用事务来处理,用SQLQuery 原生态sql来写这里,就能解决你的问题了
SQLQuery query=session.createSQLQuery("insert into youtable (username,password,email) values(?,?,?)");
个人建议用事务来处理,用SQLQuery 原生态sql来写这里,就能解决你的问题了
SQLQuery query=session.createSQLQuery("insert into youtable (username,password,email) values(?,?,?)");
#43
insert是可以用的,如果想要用sql
可以session.createSQLQuery("insert into ...")
可以session.createSQLQuery("insert into ...")
#44
正解
#45
正解。 以前也犯过同样的错误,至今不明白原因.太感谢了!
#46
说下我的意见,hibernate 的(Hql)一些对对象方法不是所有的都可以实现的,例如:多表之间的查询,而且各表之间又有关系,而且要的数据也很复杂!这里用hibernate 封装好的对对象使用的方法,根本没有办法实现,这时就会用的 sql语句来完成,用到Hbiernate的 createSQLQuery()来实现,不过此方法查询回来的结果,类型需要转换,才方便使用 返回的类型是 List<Object[]> 的类型,取的时候循环遍历 取值。可以放在自己预定好的Vo类中!为方法显示!
#47
否试过,一般都是用save(xxxx);
#1
#2
可以啊
#3
createSQLQuery 试试
#4
LZ真无聊。。。。。飘过 。。。。。。。。。。。。。!
#5
getHibernateTemplate().save(object)就可以了啊,为什么还要用insert呢。
#6
hibernate3 可以 写入语句后 用createQuery 的一个update 方法
#7
你为什么要这样子写呢,我直接保存下对象sava(Object object)就行了
#8
可以直接用save方法实现啊。。。为什么要绕远路。。。
#9
createQuery语句根本不能那么写
#10
恩,这样好的很
#11
直接SET不是更好!从来没在HIBERNATE里面用过INSERT,不过肯定是支持的
#12
可以试一下呀,
#13
记得以前试过hibernate2,Query 语句不成,但可以写成SQLQuery
#14
#15
你可以用最简单的方法呀
那就是直接save呀
那就是直接save呀
#16
up
#17
save就可以了,Hibernate自身提供了几个简单的操作,看看手册就知道了
#18
insert 语句怎么写到 Query 里面来啦。可以的吗???
#19
你们楼上这些人,人家既然这样写肯定是有这方面的需求,肯定是有特殊情况啊!非要人家save对象,知之为知之,不知为不知,何必要大家和讽刺人家呢!
#20
可以直接用save方法实现啊。。。为什么要绕远路。。。
#21
楼主这样写 insert into UserInfo(username,password,email) values(?,?,?) 应该要个构造方法 UserInfo(username,password,email)
#22
如果使用对象进行操作的用createQuery
如果用SQL操作的用createSQLQuery
如果用SQL操作的用createSQLQuery
#23
。。。
#24
createSQLQuery应该可以~~你这样写不行,直接save(object)
#25
hibernate就是把关系转换成对象来操作,用insert就失去了hibernate的意义。
#26
可以啊,session.connection()回归纯天然JDBC操作,哈哈
session.createSQLQuery()还是离不开对象操作。
session.createQuery(...HQL语句...),当然不能出现数据库的东西了,因为HQL是面向对象的查询语句。
不明白LZ为什么会问这样的问题?
session.createSQLQuery()还是离不开对象操作。
session.createQuery(...HQL语句...),当然不能出现数据库的东西了,因为HQL是面向对象的查询语句。
不明白LZ为什么会问这样的问题?
#27
不可以,你如果那样写就成了原生sql语句,然而,你如果要用原生sql语句,那么,操作并不是和jdbc的sql语句一样的,它在查询时还要把对象的属性加上去。
#28
可以
#29
别人要实现的方法是hibernate本身不自带的方法,你 save(),有个什么用?
我现在也在做SSH项目 所有方法都是自己用hql写 ,麻烦死
我现在也在做SSH项目 所有方法都是自己用hql写 ,麻烦死
#30
哪位高手说明白一点可以吗!!!小弟也是刚弄这!!感觉比ASP.NET 复杂多了!!
烦啊!!!!
烦啊!!!!
#31
直接把HQL轉化成SQL語句就可以像LZ那樣進行添加了。。。。
HIBERNATE可以轉
HIBERNATE可以轉
#32
一般都是使用createSQLQuery()这个方法实现。
我有个疑问怎么将hibernate生成的sql语句写到数据库呢??
正在解决中
我有个疑问怎么将hibernate生成的sql语句写到数据库呢??
正在解决中
#33
直接引用save吧
j2ee技术群:24739115
j2ee技术群:24739115
#34
直接操作对象就ok了,你不用的属性为空就行了啊
#35
朋友我好像看到你提的問題有人發貼~~這個不好弄
#36
用Hql也有好处。当你要对多个表进行插入时一条Hql就可解决了,如果你用Hibernate里面的save那样只会降低了性能。
#37
一般是 insert into DelinquentAccount (id, name) select c.id, c.name from Customer c where ..." 这么写的。hql 只支持INSERT INTO ... SELECT ...形式,不支持INSERT INTO ... VALUES ...形式.
#38
楼主应该是考虑性能测试,save和hql都能实现,hql估计不能关联插入。
#39
不可以...
#40
用 save挺好的直接插入了就
#41
那么多人说了半天都没有解决楼主所提问题,我来直接回复楼主吧:
使用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实现
搞不懂为什么有那么多人说可以,说着这句话的人请你们动动脑子,如果不想动脑子自己动手试一下也可以看出问题嘛,不要张开嘴就乱说一通,误人子弟。
使用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实现
搞不懂为什么有那么多人说可以,说着这句话的人请你们动动脑子,如果不想动脑子自己动手试一下也可以看出问题嘛,不要张开嘴就乱说一通,误人子弟。
#42
楼主是想写个批量插入数据,而且不想用hibernate的save来操作,因为save来操作这里是很麻烦的,因为save只能保存一个对像,要是这个对像过多的话,而且每个对像的数据都有所不一样,用save就每花大量的时间来处理对像了,所以还不如直接来操作数据库,所以会想到用insert into来解决这问题。不过hibernate hql不支持这种insert 就像上楼说的那样。
个人建议用事务来处理,用SQLQuery 原生态sql来写这里,就能解决你的问题了
SQLQuery query=session.createSQLQuery("insert into youtable (username,password,email) values(?,?,?)");
个人建议用事务来处理,用SQLQuery 原生态sql来写这里,就能解决你的问题了
SQLQuery query=session.createSQLQuery("insert into youtable (username,password,email) values(?,?,?)");
#43
insert是可以用的,如果想要用sql
可以session.createSQLQuery("insert into ...")
可以session.createSQLQuery("insert into ...")
#44
正解
#45
正解。 以前也犯过同样的错误,至今不明白原因.太感谢了!
#46
说下我的意见,hibernate 的(Hql)一些对对象方法不是所有的都可以实现的,例如:多表之间的查询,而且各表之间又有关系,而且要的数据也很复杂!这里用hibernate 封装好的对对象使用的方法,根本没有办法实现,这时就会用的 sql语句来完成,用到Hbiernate的 createSQLQuery()来实现,不过此方法查询回来的结果,类型需要转换,才方便使用 返回的类型是 List<Object[]> 的类型,取的时候循环遍历 取值。可以放在自己预定好的Vo类中!为方法显示!
#47
否试过,一般都是用save(xxxx);