您的位置:首页 > 其它

Hibernate hql: 只支持用法 INSERT INTO ... SELECT ... FROM

2013-04-02 14:45 579 查看
下面是两个例子:

[java] view
plaincopyprint?

Query query=session.createQuery("insert into UserInfo(username,password,email) values(?,?,?)");

像上面的hql语句在编译的时候会报错,

[java] view
plaincopyprint?

Exception in thread "main" org.hibernate.hql.ast.QuerySyntaxException: expecting OPEN, found 'values' near line 1, column 22 [insert into Userinfo values('aaf')]

at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:54)

at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:47)

at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:82)

at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:284)

at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:182)

at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)

at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)

at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)

at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:94)

at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)

at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)

at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1651)

at com.xmetc.hibernate.test.HQL07.main(HQL07.java:23)

因此,

[java] view
plaincopyprint?

//String queryString3 = "insert into Userinfo values()";//不支持.

[java] view
plaincopyprint?

String queryString3 = "insert into Userinfo select ... from .. ";//支持.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: