通过hibernate将非常基本的列值保存到我的订单表

通过hibernate将非常基本的列值保存到我的订单表,hibernate,object,Hibernate,Object,我试图通过hibernate将非常基本的列值保存到订单表中。列为客户编号,[在此处输入图像描述][1]为整数类型。我已创建了我的订单类并包含注释。不确定我的SQL中的语法错误在哪里。请帮忙 主类文件看起来不错。 数据库连接成功! 不确定当我试图保存对象时,它抛出了一个SQL语法错误 谢谢!请查找我的POJO和相关映射/注释 这是我的订单类:import javax.persistence.Column import javax.persistence.Entity; import javax.p

我试图通过hibernate将非常基本的列值保存到订单表中。列为客户编号,[在此处输入图像描述][1]为整数类型。我已创建了我的订单类并包含注释。不确定我的SQL中的语法错误在哪里。请帮忙

主类文件看起来不错。 数据库连接成功! 不确定当我试图保存对象时,它抛出了一个SQL语法错误

谢谢!请查找我的POJO和相关映射/注释

这是我的订单类:import javax.persistence.Column

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="ORDER")
public class Order {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="Order_no")
    private int _OrderNo;



    @Column(name="Customer_no")
    private int _CustomerNo;

    public Order() {

    }

    public Order(int CustomerNo) {


        this._CustomerNo = CustomerNo;
    }



    public int get_OrderNo() {
        return _OrderNo;
    }

    public void set_OrderNo(int OrderNo) {
        this._OrderNo = OrderNo;
    }


    public int get_CustomerNo() {
        return _CustomerNo;
    }

    public void set_CustomerNo(int CustomerNo) {
        this._CustomerNo = CustomerNo;
    }

    @Override
    public String toString() {
        return "Order [_OrderNo=" + _OrderNo + ",  _CustomerNo=" + _CustomerNo + "]";
    }

}  

这是我的实际对象保存文件

public class CreateOrder {

    public static void main(String[] args) {


        SessionFactory factory = new Configuration().configure("hibernate.cfg.xml").addAnnotatedClass(Order.class)
                .buildSessionFactory();



        Session session = factory.getCurrentSession();

        try {



            System.out.println("Creating the Order Object.......");

            Order tempOrder = new Order(123);


            session.beginTransaction();


            System.out.println("Saving the Order ");
            session.save(tempOrder);


            session.getTransaction().commit();
            System.out.println("Done!!");
        }

        finally {
            factory.close();
        }
    }

}


问题在于您的表nam
@Table(name=“ORDER”)

ORDER
是MySQL中的保留关键字(您可能听说过
ORDER BY
?),因此它不能直接用作
INSERT
中的表名。最简单的方法是将表名更改为其他名称,例如
ORDERS

一种解决方法是在表名中包含引号,如下所示

@Table(name="`ORDER`") 
还是JPA2

@Table(name="\"ORDER\"")

但这些可能会破坏RDMBS的兼容性。IMHO表格应以复数形式命名

Hibernate生成一个失败的查询。可能您的POJO到表的映射搞砸了。1)不要粘贴代码的图像,而是实际的代码。2) 不要拍打stacktrace的图像,但实际的stacktrace3)粘贴hibernate.cfg 4)不要在注释中添加代码,而是编辑你的问题5)这里没有任何内容)stacktrace在哪里?@ventsyv我的类到DB表的映射,如你所见,看起来不错。有什么想法吗?
@Table(name="`ORDER`") 
@Table(name="\"ORDER\"")