当前位置: 代码迷 >> Java Web开发 >> 小弟我的hql语句有有关问题,前台的数据不能发送到oracle数据库中,求大神帮小弟我看一上
  详细解决方案

小弟我的hql语句有有关问题,前台的数据不能发送到oracle数据库中,求大神帮小弟我看一上

热度:952   发布时间:2013-02-25 21:08:52.0
我的hql语句有问题,前台的数据不能发送到oracle数据库中,求大神帮我看一下!
String hql = "insert into oa_account(a_id, a_user_id, a_money, a_remark, a_cause, a_time, a_item, a_status)values(account_sequence.nextval, ?, ?, ?, ?, ?, ?, ?);";


this.getHibernateTemplate().find(hql, new Object[]{ac.getA_user_id(),ac.getA_money(),ac.getA_remark(),ac.getA_cause(),ac.getA_time(),ac.getA_item(),ac.getA_status()});


//这是报的错
org.hibernate.hql.ast.QuerySyntaxException: unexpected token: values near line 1, column 94 [insert into oa_account(a_id, a_user_id, a_money, a_remark, a_cause, a_time, a_item, a_status)values(account_sequence.nextval, ?, ?, ?, ?, ?, ?, ?);]

------最佳解决方案--------------------------------------------------------
hibernate是ORM的框架保存的直接用save(你的对象);
你非要用insert的话就用Query query=session.createSQLQuery(sql);一个一个的把你的参数用
query.setParameter(int index,Object value);
不过不建议这样。用hibernate了保存直接save要不就失去ORM的优势了
------其他解决方案--------------------------------------------------------
保存用save
------其他解决方案--------------------------------------------------------
我查了下HQL……
1.HQL
(1)"概述"
名称释义:HQL:Hibernate Query Language。
语法与SQL基本一致。可以通过HQL直接使用SQL语句。

2.HQL基本语法规则:
(1)在HQL中关键字不区分大小写,通常小写,类名.属性名必须区分大小写。
(2)HQL中的元素,如对象名、属性名等,都是java程序的元素,不是数据库元素。
(3)因HQL使用的都是java元素,故在HQL中可直接使用.符导航。


其中有这么条:
(2)HQL中的元素,如对象名、属性名等,都是java程序的元素,不是数据库元素。
不知道楼主的hql里面放的可是属性名?还是表的字段名?
------其他解决方案--------------------------------------------------------
使用hibernate了保存的一般都已对象的形式去保存直接save(ac);
hibernateTemplate.find方法中的queryString参数是要hql的。你这样完全是sql的写法当然会报错
------其他解决方案--------------------------------------------------------
find方法你里面放inster语句?
------其他解决方案--------------------------------------------------------
厄……抱歉……是我数错了………………………………
------其他解决方案--------------------------------------------------------
你把错误信息贴全点
------其他解决方案--------------------------------------------------------

org.springframework.orm.hibernate3.HibernateQueryException: unexpected token: values near line 1, column 94 [insert into oa_account(a_id, a_user_id, a_money, a_remark, a_cause, a_time, a_item, a_status)values(account_sequence.nextval, ?, ?, ?, ?, ?, ?, ?);]; nested exception is org.hibernate.hql.ast.QuerySyntaxException: unexpected token: values near line 1, column 94 [insert into oa_account(a_id, a_user_id, a_money, a_remark, a_cause, a_time, a_item, a_status)values(account_sequence.nextval, ?, ?, ?, ?, ?, ?, ?);]
org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:660)
org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)
org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:912)
cl.com.oa.dao.impl.AccountDAOImpl.save(AccountDAOImpl.java:36)
cl.com.oa.action.AccountAction.save(AccountAction.java:39)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
  相关解决方案