当前位置: 首页 > 知识库问答 >
问题:

尝试将具有hibernate的字段插入到表中时出错

安奇
2023-03-14

javax.persistence.persistenceException:org.hibernate.internal.exceptionconverterimpl.convert(exceptionconverterimpl.java:154)org.hibernate.internal.exceptionconverterimpl.convert(exceptionconverterimpl.java:181)org.hibernate.query.internal.abstractproducedquery.executeupdate(abstractproducedquery.java:1617)util.sqlcontrol.insertorderline(

根本原因:

org.hibernate.exception.sqlgrammarexception:无法执行语句org.hibernate.exception.internal.sqlexceptiontypedelegate.convert(sqlexceptiontypedelegate.java:63)org.hibernate.exception.internal.standardsqlexceptionconverter.convert(standardsqlexceptionconverter.java:42)org.hibernate.engine.jdbc.spi.sqlexceptionhelper.convert(essRequest(ShoppingCardServlet.java:53)Servlet.ShoppingCardServlet.doPost(ShoppingCardServlet.java:81)javax.servlet.http.httpServlet.service(httpServlet.java:660)javax.servlet.http.httpServlet.service(httpServlet.java:741)org.apache.tomcat.websocket.server.wsfilter.doFilter(wsfilter.java:52)

根本原因:

注意服务器日志中提供了根本原因的完整堆栈跟踪。

html" target="_blank">public void insertOrderLine(String orderName, String tableId, String pID, String pName , String category, int quantity, int price, String date){

       Session session = HibernateUtil.getSessionFactory().openSession();
       session.beginTransaction();
       Query query =  session.createSQLQuery("INSERT INTO "+ orderName+" VALUES ("+tableId +","+ pID+" ,"+pName +
               ","+category+","+quantity+ ","+ price+" ,"+ date+")");
        int result = query.executeUpdate();
   }

共有1个答案

韩刚洁
2023-03-14

您似乎没有设置要插入值的列!在执行insert查询时,需要确切指定要插入哪些列,如下所示

INSERT INTO table([column1], [column1]) VALUES(value_for_col1, value_for_col2).

我猜这就是为什么hibernate会抱怨未知列的原因。根据您的输入参数进行猜测,我想您的查询需要如下所示:

Query query =  session.createSQLQuery("INSERT INTO "+ orderName+" ([orderName], [tableId], [pID], [pName], [category], [quantity], [price], [date])VALUES ("+tableId +","+ pID+" ,"+pName +
           ","+category+","+quantity+ ","+ price+" ,"+ date+")");

另外,对于复杂的查询,我建议将它们存储在sql文件中,这样可以使编辑更容易,代码也更整洁。然后只需将sql文件作为字符串加载即可。

在hibernate中保存更简单的方法是创建一个实体对象(创建一个类,然后用@entity进行注释)。然后,Hibernate会为您保存这个对象,避免了本机更新查询的需要!

 类似资料:
  • 我有一个QuerySet,它将包含来自某些x表的信息,现在我想将这些值插入到另一个具有与x表相同的字段的表中。

  • 我有一个关于电影和演员的数据库。我想做的是:我想从相应的数组列表中获取演员数据(如姓名、国家、出生日期),并将这些数据插入到我的演员表中。我想对我的电影桌做同样的事情。以下是我的部分代码: 然后我得到这些错误: > < li> 线程“main”javax . persistence . roll back异常:提交事务时出错 -原因:javax.persistence。PersistenceExc

  • 我正在尝试使用我已经制作的链表结构在C中实现开放散列。链表结构可以很好地工作,但是当试图在哈希表结构中使用它们时,我经常会得到“分段错误(核心转储)”的信息。 我已经进行了检查,以确保使用了正确的数据类型,并且分配了正确的内存。 createTable()不会引发任何运行时错误。但任何其他哈希表函数都可以。我无法访问表中的链表。

  • 我是新来的,对Mysql和Python非常陌生。我对这个insert语句有一个问题: 错误是: 使用以下语句创建表: 我花了一整天的时间想弄清楚这件事。谁能给我一个指针吗?

  • 我尝试使用flask在MongoDB中创建字段,使用下面的代码 URI中传递了正确的凭据,但我得到以下错误 OperationFailure:身份验证失败。,完整错误:{'OK':0.0,'errMsg':'Authentication Failed.','代码':18,'代码名':'AuthenticationFailed','操作时间':Timestamp(1600853835,1),'$Cl

  • 我收到以下异常- org.hibernate.exception.sqlgrammarexception:无法插入:[Employee] 以下是详细信息: hibernate.cfg.xml employee.hbm.xml 请帮助解决异常。提前道谢!