Java 通过JDBC语句执行DDL时出错

Java 通过JDBC语句执行DDL时出错,java,mysql,hibernate,Java,Mysql,Hibernate,在hibernate中我真的需要一些帮助,我搜索了所有的问题,但它不起作用 我的问题很奇怪,至少我这么认为。在我的项目中,我想使用实体类、hibernate xml映射文件(*.hbm.xml)和hibernate配置文件(hibernate.cfg.xml)在mysql数据库中创建表。奇怪的是,我只有一个表无法创建,而其他表可以成功创建 好的,这是我的项目代码,我想这些信息可能会被用到 cart.java import java.io.Serializable; import java.ut

在hibernate中我真的需要一些帮助,我搜索了所有的问题,但它不起作用

我的问题很奇怪,至少我这么认为。在我的项目中,我想使用实体类、hibernate xml映射文件(*.hbm.xml)和hibernate配置文件(hibernate.cfg.xml)在mysql数据库中创建表。奇怪的是,我只有一个表无法创建,而其他表可以成功创建

好的,这是我的项目代码,我想这些信息可能会被用到

cart.java

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

/**
 * @author Ning
 *
 */
public class Cart implements Serializable{

    private Integer id;
    private User user;
    private Map<Integer, Integer> shopItems = new HashMap<>();

    public Cart() {}

    public Cart(User user, Map<Integer, Integer> shopItems) {
        super();
        this.user = user;
        this.shopItems = shopItems;
    }

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }
    public Map<Integer, Integer> getShopItems() {
        return shopItems;
    }
    public void setShopItems(Map<Integer, Integer> shopItems) {
        this.shopItems = shopItems;
    }

    @Override
    public String toString() {
        return "Cart [id=" + id + ", user=" + user + ", shopItems=" + shopItems + "]";
    }

}


<!------cart.hbm.xml----->

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-4-30 9:23:54 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="com.eshop.design.model.Cart" table="CART">
        <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <generator class="native" />
        </id>
        <many-to-one name="user" class="com.eshop.design.model.User" fetch="join">
            <column name="USER" />
        </many-to-one>
        <map name="shopItems">
            <key column="CART_ID"></key>
            <index column="PRODUCT_ID" type="java.lang.Integer"></index>
            <element column="NUMBER" type="java.lang.Integer"></element>
        </map>
    </class>
</hibernate-mapping>



Order.java

import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class Order implements Serializable{


    private Integer id;
    private User user;
    private Map<Integer, Integer> shopItems = new HashMap<>();
    private Date date;
    private Status status;
    private String remark;

    public Order() {}
    public Order(User user, Map<Integer, Integer> shopItems, Date date, Status status, String remark) {
        super();
        this.user = user;
        this.shopItems = shopItems;
        this.date = date;
        this.status = status;
        this.remark = remark;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }
    public Map<Integer, Integer> getShopItems() {
        return shopItems;
    }
    public void setShopItems(Map<Integer, Integer> shopItems) {
        this.shopItems = shopItems;
    }
    public Date getDate() {
        return date;
    }
    public void setDate(Date date) {
        this.date = date;
    }
    public Status getStatus() {
        return status;
    }
    public void setStatus(Status status) {
        this.status = status;
    }
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }
    @Override
    public String toString() {
        return "Order [id=" + id + ", user=" + user + ", shopItems=" + shopItems + ", date=" + date + ", status="
                + status + ", remark=" + remark + "]";
    }
}

<!-------order.hbm.xml----->
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-4-30 9:23:54 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="com.eshop.design.model.Order" table="ORDER">
        <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <generator class="native" />
        </id>
        <many-to-one name="user" class="com.eshop.design.model.User" fetch="join">
            <column name="USER" />
        </many-to-one>
        <map name="shopItems">
            <key column="ORDER_ID"></key>
            <index column="PRODUCT_ID" type="java.lang.Integer"></index>
            <element column="NUMBER" type="java.lang.Integer"></element>
        </map>
        <property name="date" type="java.util.Date">
            <column name="DATE" />
        </property>
        <many-to-one name="status" class="com.eshop.design.model.Status" fetch="join">
            <column name="STATUS" />
        </many-to-one>
        <property name="remark" type="java.lang.String">
            <column name="REMARK" />
        </property>
    </class>
</hibernate-mapping>


<!-----user.java------>

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

public class User implements Serializable{

    private Integer id;
    private String login;
    private String pass;
    private String name;
    private String phone;
    private String address;
    private Double assets;

    // Constructors
    /** default constructor */
    public User() {}
    /** full constructor */
    public User( String login, String pass, String name, String phone, String address, Double assets) {
        super();
        this.login = login;
        this.pass = pass;
        this.name = name;
        this.phone = phone;
        this.address = address;
        this.assets = assets;
    }

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getLogin() {
        return login;
    }
    public void setLogin(String login) {
        this.login = login;
    }
    public String getPass() {
        return pass;
    }
    public void setPass(String pass) {
        this.pass = pass;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public Double getAssets() {
        return assets;
    }
    public void setAssets(Double assets) {
        this.assets = assets;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", login=" + login + ", pass=" + pass + ", name=" + name + ", phone=" + phone
                + ", address=" + address + ", assets=" + assets + "]";
    }

}


<!-----user.hbm.xml---->
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-4-30 9:23:54 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="com.eshop.design.model.User" table="USER">
        <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <generator class="native" />
        </id>
        <property name="login" type="java.lang.String">
            <column name="LOGIN" />
        </property>
        <property name="pass" type="java.lang.String">
            <column name="PASS" />
        </property>
        <property name="name" type="java.lang.String">
            <column name="NAME" />
        </property>
        <property name="phone" type="java.lang.String">
            <column name="PHONE" />
        </property>
        <property name="address" type="java.lang.String">
            <column name="ADDRESS" />
        </property>
        <property name="assets" type="java.lang.Double">
            <column name="ASSETS" />
        </property>
    </class>
</hibernate-mapping>



<!-- I config the data source and session factory in the spring's configuration file applicationContext.xml-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="user" value="${user}"></property> 
        <property name="password" value="${password}"></property>
        <property name="driverClass" value="${driverClass}"></property>
        <property name="jdbcUrl" value="${jdbcUrl}"></property>
        <property name="minPoolSize" value="${minPoolSize}" />
        <property name="maxPoolSize" value="${maxPoolSize}" />
        <property name="initialPoolSize" value="${initialPoolSize}" />
    </bean>

<!-- SessionFactory  config -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
        <property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
        <property name="mappingLocations" value="classpath:com/eshop/design/model/*.hbm.xml"></property>
    </bean>

<!----hibernate.cfg.xml--->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>

    <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.format_sql">true</property>
    <property name="hibernate.hbm2ddl.auto">update</property>

    </session-factory>
</hibernate-configuration>
cart.java
导入java.io.Serializable;
导入java.util.HashMap;
导入java.util.Map;
/**
*@作者宁
*
*/
公共类Cart实现了可序列化{
私有整数id;
私人用户;
private Map shopItems=new HashMap();
公共购物车(){}
公共购物车(用户、地图购物项目){
超级();
this.user=用户;
this.shopItems=shopItems;
}
公共整数getId(){
返回id;
}
公共无效集合id(整数id){
this.id=id;
}
公共用户getUser(){
返回用户;
}
公共void setUser(用户){
this.user=用户;
}
公共地图getShopItems(){
退货;
}
公共无效设置商店项目(映射商店项目){
this.shopItems=shopItems;
}
@凌驾
公共字符串toString(){
返回“购物车[id=“+id+”,用户=“+user+”,shopItems=“+shopItems+””;
}
}
Order.java
导入java.io.Serializable;
导入java.util.Date;
导入java.util.HashMap;
导入java.util.Map;
公共类顺序实现可序列化{
私有整数id;
私人用户;
private Map shopItems=new HashMap();
私人日期;
私人身份;
私人字符串注释;
公共秩序(){}
公共订单(用户、地图购物项目、日期、状态、字符串备注){
超级();
this.user=用户;
this.shopItems=shopItems;
this.date=日期;
这个状态=状态;
这句话是什么意思;
}
公共整数getId(){
返回id;
}
公共无效集合id(整数id){
this.id=id;
}
公共用户getUser(){
返回用户;
}
公共void setUser(用户){
this.user=用户;
}
公共地图getShopItems(){
退货;
}
公共无效设置商店项目(映射商店项目){
this.shopItems=shopItems;
}
公共日期getDate(){
返回日期;
}
公共作废设置日期(日期){
this.date=日期;
}
公共状态getStatus(){
返回状态;
}
公共无效设置状态(状态){
这个状态=状态;
}
公共字符串getRemark(){
回话;
}
公共注释(字符串注释){
这句话是什么意思;
}
@凌驾
公共字符串toString(){
return“Order[id=“+id+”,user=“+user+”,shopItems=“+shopItems+”,date=“+date+”,status=”
+状态+”,备注=“+备注+”];
}
}
导入java.io.Serializable;
导入java.util.HashSet;
导入java.util.Set;
公共类用户实现可序列化{
私有整数id;
私有字符串登录;
私人串通;
私有字符串名称;
私人电话;
私有字符串地址;
私人双重资产;
//建设者
/**默认构造函数*/
公共用户(){}
/**完全构造函数*/
公共用户(字符串登录、字符串传递、字符串名称、字符串电话、字符串地址、双资产){
超级();
this.login=登录;
this.pass=通过;
this.name=名称;
this.phone=电话;
this.address=地址;
这是资产=资产;
}
公共整数getId(){
返回id;
}
公共无效集合id(整数id){
this.id=id;
}
公共字符串getLogin(){
返回登录;
}
公共void setLogin(字符串登录){
this.login=登录;
}
公共字符串getPass(){
回程通行证;
}
公共无效设置传递(字符串传递){
this.pass=通过;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共字符串getPhone(){
回电话;
}
公用无效设置电话(字符串电话){
this.phone=电话;
}
公共字符串getAddress(){
回信地址;
}
公共无效设置地址(字符串地址){
this.address=地址;
}
公共资产{
归还资产;
}
公共资产(双重资产){
这是资产=资产;
}
@凌驾
公共字符串toString(){
返回“User[id=“+id+”,login=“+login+”,pass=“+pass+”,name=“+name+”,phone=“+phone
+,address=“+address+”,assets=“+assets+”];
}
}
org.hibernate.dialogue.mysql5dialogue
真的
真的
更新
这是我第一次在这里提问,有些格式可能不令人满意


提前谢谢,忘了我糟糕的英语。

我想用户是数据库中的关键词。在hbm.xmlwhat表中将列名更改为user_id