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