当前位置: 首页 > 面试题库 >

错误:您在Hibernate中的SQL语法中有错误

颛孙信厚
2023-03-14
问题内容

我从数据库中删除记录时遇到问题。几个小时以来,我一直在努力弄清自己在做错什么。我在这里搜索了一些主题,但没有一个回答我在做什么错。我在数据库中制作了这3个表:

CREATE TABLE IF NOT EXISTS `dat1`.`M_CUSTOMER_LIST` (
  `CUSTOMER_LIST_ID` int(4) NOT NULL primary KEY AUTO_INCREMENT,
  `C_NAME` varchar(45) NOT NULL,
  `C_LAST_NAME` varchar(45) NOT NULL,
  `C_P_CODE` varchar(12) NOT NULL,
  `C_MAIL` varchar(45) NOT NULL,
  `C_PHONE_NR` varchar(12) NOT NULL,
  `C_USER_TYPE` varchar(45) NOT NULL,
  `C_PASSWORD` varchar(45) NOT NULL
);

CREATE TABLE IF NOT EXISTS `dat1`.`M_SERVICES` (
 `M_SERVICE_ID` int(4) NOT NULL primary KEY AUTO_INCREMENT,
 `SERVICE_NAME` varchar(45) NOT NULL,
 `SERVICE_PRICE` INT(4) NOT NULL,
 `SERVICE_DESCRIPTION` int(60) NOT NULL
);

CREATE TABLE IF NOT EXISTS `dat1`.`ORDER` (
  `ORDER_ID` int(4) NOT NULL primary KEY AUTO_INCREMENT,
  `ORDER_DATE` varchar(45) NOT NULL,
  `M_CUST` int(4) NOT NULL,
  `M_SERV` int(4) NOT NULL,
  foreign key (`M_SERV`) references `M_SERVICES`(`M_SERVICE_ID`),
  foreign key (`M_CUST`) references `M_CUSTOMER_LIST`(`CUSTOMER_LIST_ID`)
);

这是我的hibernate映射文件:

 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 <hibernate-mapping>
   <class name="dat3.MCustomerList" table="m_customer_list">
     <id column="CUSTOMER_LIST_ID" name="customerList_id" type="int">
       <generator class="native"/>
     </id>
    <property column="C_NAME" name="c_name" type="string"/>
    <property column="C_L_NAME" name="c_l_name" type="string"/>
    <property column="C_P_CODE" name="c_p_code" type="string"/>
    <property column="C_EMAIL" name="c_email" type="string"/>
    <property column="C_PHONE_NR" name="c_phone_nr" type="string"/>
    <property column="C_USER_TYPE" name="c_user_type" type="string"/>
    <property column="C_PASSWORD" name="c_password" type="string"/>
  </class>
  <class name="dat3.M_Services" table="m_services">
    <id column="M_SERVICE_ID" name="m_service_id" type="int">
  <generator class="native"/>
    </id>
    <property column="SERVICE_NAME" name="service_name" type="string"/>
    <property column="SERVICE_PRICE" name="service_price" type="int"/>
    <property column="SERVICE_DESCRIPTION" name="service_description" type="string"/>
  </class>
  <class name="dat3.Order" table="order">
    <id column="ORDER_ID" name="order_id" type="int">
  <generator class="native"/>
    </id>
    <property column="ORDER_DATE" name="order_date" type="date"/>
    <many-to-one class="dat3.MCustomerList" column="M_CUST" name="customerList" not-null="true"/>
    <many-to-one class="dat3.M_Services" column="M_SERV" name="m_service" not-null="true"/>
   </class>
</hibernate-mapping>

因此,当我尝试从jTable中删除一条记录时,它给了我一个错误。这是我用来从jTable和数据库中删除数据的代码:

    if ((this.jTable1.getSelectedRow() != -1) && (this.jTable1.getValueAt(this.jTable1.getSelectedRow(), 0) != ""))
    {
        ServiceCheck serviceCheck = new ServiceCheck();
        serviceCheck.deleteOrder(Integer.valueOf(this.jTable1.getModel().getValueAt(this.jTable1.getSelectedRow(), 0).toString()).intValue());
    }
    else
    {
      JOptionPane.showMessageDialog(null, "Error");
    }

ServiceCheck.java

public void deleteOrder(int id){
  Session session = factory.openSession();
  Transaction tx = null;
  try{
     tx = session.beginTransaction();
     Order order = (Order)session.get(Order.class, Integer.valueOf(id)); 
     session.delete(order); 
     JOptionPane.showMessageDialog(null, "You have successfully deleted your order");
     tx.commit();
  }catch (HibernateException e) {
     if (tx!=null) tx.rollback();
     e.printStackTrace(); 
  }finally {
     session.close(); 
  }
}

这是错误:

 ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order order0_ where order0_.ORDER_ID=2' at line 1

任何帮助将不胜感激!


问题答案:

ORDER是保留的SQL关键字。用其他名称创建ORDER表



 类似资料:
  • 我需要帮助。我正在开发上传文本文件的应用程序。就在这一刻,我遇到了错误,我不能清楚地理解。下面是我的代码: 使用TextFilesDB; 创建表(int(11)NOT NULL AUTO_INCREMENT, varchar(45)NOT NULL,varchar(45)默认NULL,varchar(45)默认NULL,mediumblob,主键()))

  • 我正在运行以下SQL语法: 但不管用。我得到了这个错误: 错误1064(42000):您的SQL语法中有错误;查看与您的MySQL server版本相对应的手册,了解第1行“DISTINCT >”Number of Employees“FROM Hours”附近使用的正确语法 你能告诉我我在哪里做错了吗?对不起,我对MySQL和数据库不熟悉。

  • 问题内容: 我有一个MySQL命令: 当我运行它时,我得到一个错误: 问题答案: 是不是 您应该使用SQL工具来可视化可能出现的错误,例如 MySQL Workbench 。

  • 每次运行它都会给我这个错误。 Query通过USB从arduino获取数据。几天前,它用一个键盘来测试它是否正常工作,直到我尝试用一个RFID阅读器来获取ID。我只是将列ID更改为序列号以匹配数据库。如果我将ID直接放入查询中,它就会神奇地工作。我不知道这是否与我的Arduino上的代码有关。 Python代码: 以前的Arduino代码: Arduino当前代码:

  • 尝试使用 HQL 从表中获取记录时出现错误 原因:com . Mysql . JDBC . exceptions . JDBC 4 . MySQL syntaxerrorexception:您的SQL语法有错误;请查阅与您的MySQL服务器版本相对应的手册,了解使用near '的正确语法。userinfo userinfo 0 _ where userinfo 0 _。login_id='musk