Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Hibernate:更改表失败_Mysql_Hibernate_Nhibernate Mapping - Fatal编程技术网

Mysql Hibernate:更改表失败

Mysql Hibernate:更改表失败,mysql,hibernate,nhibernate-mapping,Mysql,Hibernate,Nhibernate Mapping,我使用的是Hibernate 4,我想快速测试@OrderColumn注释,但尝试这样做时出现以下错误: INFO [main] (SchemaExport.java:343) - HHH000227: Running hbm2ddl schema export DEBUG [main] (SchemaExport.java:353) - Import file not found: /import.sql DEBUG [main] (SqlStatementLogger.java:104) -

我使用的是Hibernate 4,我想快速测试
@OrderColumn
注释,但尝试这样做时出现以下错误:

INFO [main] (SchemaExport.java:343) - HHH000227: Running hbm2ddl schema export
DEBUG [main] (SchemaExport.java:353) - Import file not found: /import.sql
DEBUG [main] (SqlStatementLogger.java:104) - 
    alter table Order 
        drop 
        foreign key FK48E972E19D16493
Hibernate: 
    alter table Order 
        drop 
        foreign key FK48E972E19D16493
ERROR [main] (SchemaExport.java:425) - HHH000389: Unsuccessful: alter table Order drop foreign key FK48E972E19D16493
ERROR [main] (SchemaExport.java:426) - 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 
        drop 
        foreign key FK48E972E19D16493' at line 1
DEBUG [main] (SqlStatementLogger.java:104) - 
    drop table if exists Customer
Hibernate: 
    drop table if exists Customer
DEBUG [main] (SqlStatementLogger.java:104) - 
    drop table if exists Order
Hibernate: 
    drop table if exists Order
ERROR [main] (SchemaExport.java:425) - HHH000389: Unsuccessful: drop table if exists Order
ERROR [main] (SchemaExport.java:426) - 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' at line 1
DEBUG [main] (SqlStatementLogger.java:104) - 
    create table Customer (
        id integer not null auto_increment,
        primary key (id)
    )
Hibernate: 
    create table Customer (
        id integer not null auto_increment,
        primary key (id)
    )
DEBUG [main] (SqlStatementLogger.java:104) - 
    create table Order (
        id integer not null auto_increment,
        number varchar(255),
        customer_id integer,
        orders_index integer,
        primary key (id)
    )
Hibernate: 
    create table Order (
        id integer not null auto_increment,
        number varchar(255),
        customer_id integer,
        orders_index integer,
        primary key (id)
    )
ERROR [main] (SchemaExport.java:425) - HHH000389: Unsuccessful: create table Order (id integer not null auto_increment, number varchar(255), customer_id integer, orders_index integer, primary key (id))
ERROR [main] (SchemaExport.java:426) - 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 (
        id integer not null auto_increment,
        number varchar(255),' at line 1
DEBUG [main] (SqlStatementLogger.java:104) - 
    alter table Order 
        add index FK48E972E19D16493 (customer_id), 
        add constraint FK48E972E19D16493 
        foreign key (customer_id) 
        references Customer (id)
Hibernate: 
    alter table Order 
        add index FK48E972E19D16493 (customer_id), 
        add constraint FK48E972E19D16493 
        foreign key (customer_id) 
        references Customer (id)
ERROR [main] (SchemaExport.java:425) - HHH000389: Unsuccessful: alter table Order add index FK48E972E19D16493 (customer_id), add constraint FK48E972E19D16493 foreign key (customer_id) references Customer (id)
ERROR [main] (SchemaExport.java:426) - 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 
        add index FK48E972E19D16493 (customer_id), 
        add constrain' at line 1
 INFO [main] (SchemaExport.java:405) - HHH000230: Schema export complete
下面是正在使用的代码:

Customer.java

@Entity
public class Customer {
       private Integer id;
       private List<Order> orders;

       @Id @GeneratedValue 
       public Integer getId() { return id; }
       public void setId(Integer id) { this.id = id; }

       @OneToMany(mappedBy="customer")
       @OrderColumn(name="orders_index")
       public List<Order> getOrders() { return orders; }
       public void setOrders(List<Order> orders) { this.orders = orders; }

       public void addOrder(Order order) {
           this.orders.add(order);
           order.setCustomer(this);
       }
}
@Entity
public class Order {
       private Integer id;
       private String number;
       private Customer customer;

       public Order() {}   
       public Order(String number) { this.number = number; }


    @Id @GeneratedValue 
       public Integer getId() { return id; }
       public void setId(Integer id) { this.id = id; }

       public String getNumber() { return number; }
       public void setNumber(String number) { this.number = number; }

       @ManyToOne
       @JoinColumn(name="customer_id")
       public Customer getCustomer() { return customer; }
       public void setCustomer(Customer customer) { this.customer = customer; }
}
public class Client {
    public static void main(String[] args) {        
        SessionFactory sessionFactory =  new AnnotationConfiguration().configure().buildSessionFactory();
        Session session = sessionFactory.openSession();
        Transaction txn = session.beginTransaction();

        //inserting data into tables

        Customer leo = new Customer();
        List<Order> orders = new ArrayList<Order>();
        Order book = new Order("1-sia-2nd-edi");
        Order mobile = new Order("2-son-wal");
        Order ipod = new Order("3-ipo-app");
        orders.add(book);orders.add(mobile);orders.add(ipod);
        leo.setOrders(orders);

        session.save(leo);


        //retrieving data from tables

        txn.commit();
        session.close();            
    }
}
TestClient.java

@Entity
public class Customer {
       private Integer id;
       private List<Order> orders;

       @Id @GeneratedValue 
       public Integer getId() { return id; }
       public void setId(Integer id) { this.id = id; }

       @OneToMany(mappedBy="customer")
       @OrderColumn(name="orders_index")
       public List<Order> getOrders() { return orders; }
       public void setOrders(List<Order> orders) { this.orders = orders; }

       public void addOrder(Order order) {
           this.orders.add(order);
           order.setCustomer(this);
       }
}
@Entity
public class Order {
       private Integer id;
       private String number;
       private Customer customer;

       public Order() {}   
       public Order(String number) { this.number = number; }


    @Id @GeneratedValue 
       public Integer getId() { return id; }
       public void setId(Integer id) { this.id = id; }

       public String getNumber() { return number; }
       public void setNumber(String number) { this.number = number; }

       @ManyToOne
       @JoinColumn(name="customer_id")
       public Customer getCustomer() { return customer; }
       public void setCustomer(Customer customer) { this.customer = customer; }
}
public class Client {
    public static void main(String[] args) {        
        SessionFactory sessionFactory =  new AnnotationConfiguration().configure().buildSessionFactory();
        Session session = sessionFactory.openSession();
        Transaction txn = session.beginTransaction();

        //inserting data into tables

        Customer leo = new Customer();
        List<Order> orders = new ArrayList<Order>();
        Order book = new Order("1-sia-2nd-edi");
        Order mobile = new Order("2-son-wal");
        Order ipod = new Order("3-ipo-app");
        orders.add(book);orders.add(mobile);orders.add(ipod);
        leo.setOrders(orders);

        session.save(leo);


        //retrieving data from tables

        txn.commit();
        session.close();            
    }
}
公共类客户端{
公共静态void main(字符串[]args){
SessionFactory SessionFactory=新的AnnotationConfiguration().configure().buildSessionFactory();
Session Session=sessionFactory.openSession();
事务txn=session.beginTransaction();
//向表中插入数据
客户leo=新客户();
列表顺序=新的ArrayList();
订单簿=新订单(“1-sia-2nd-edi”);
订单移动=新订单(“2-son-wal”);
订单ipod=新订单(“3-ipo-app”);
orders.add(书本);orders.add(手机);orders.add(ipod);
leo.设置命令(orders);
session.save(leo);
//从表中检索数据
提交();
session.close();
}
}
hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
 <session-factory>
  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="hibernate.connection.password">pass</property>
  <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/testdb</property>
  <property name="hibernate.connection.username">root</property>
  <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

  <property name="hibernate.hbm2ddl.auto">create</property>
  <property name="hibernate.show_sql">true</property>
  <property name="hibernate.format_sql">true</property>
  <property name="hibernate.use_sql_comments">true</property>

  <mapping class="com.transbinary.entity.Customer"/>
  <mapping class="com.transbinary.entity.Order"/>  
 </session-factory>
</hibernate-configuration>

com.mysql.jdbc.Driver
通过
jdbc:mysql://localhost:3306/testdb
根
org.hibernate.dialogue.mysqldialogue
创造
真的
真的
真的

有人能帮我理解为什么会出现这样的错误吗?

order是mysql中的一个关键字。所以请使用不同的名称。我想这可能是问题所在。
如果您更改表名,它将起作用。我对它进行了测试。

order是mysql中的一个关键字。因此请使用不同的名称。我认为这可能是问题所在。
如果您更改表名,它将起作用。我测试了它。

谢谢!我有一个客户试图强迫一个JPA订单对象进入一个设计,我发现了这篇文章。因此,如果使用名为Order的标准JPA@实体,它将失败。(确认)谢谢!我有一个客户试图强迫一个JPA订单对象进入一个设计,我发现了这篇文章。因此,如果使用名为Order的标准JPA@实体,它将失败。(已确认)