Java 休眠:无法创建表

Java 休眠:无法创建表,java,spring,hibernate,hibernate-mapping,Java,Spring,Hibernate,Hibernate Mapping,这是我的密码: UserDetails.java package com.javacodegeeks.enterprise.rest.jersey; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import javax.persistence.Column; import javax.persistence.Embedded; import javax.persistence.Entity

这是我的密码:

UserDetails.java

package com.javacodegeeks.enterprise.rest.jersey;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

@Entity
public class UserDetails implements ApplicationContextAware,BeanNameAware,InitializingBean,DisposableBean{

    @Embedded
    Address officeAddress;

    public Address getOfficeAddress() {
        return officeAddress;
    }

    public void setOfficeAddress(Address officeAddress) {
        this.officeAddress = officeAddress;
    }

    public Address getHomeAddress() {
        System.out.println("Enter in get home address");
        System.out.println(homeAddress.roomNumber + homeAddress.streetName);
        return homeAddress;
    }

    public void setHomeAddress(Address homeAddress) {
        this.homeAddress = homeAddress;
    }

    @Transient
    @Autowired
    Address homeAddress;

    @Column
    String name;

    public String getName() {
        return name;
    }

    @Column
    String password;

    public String getPass() {
        return password;
    }

    public void setPass(String password) {
        this.password = password;
    }

    @Column
    String adminName;

    public String getAdminName() {
        return adminName;
    }

    public void setAdminName(String adminName) {
        this.adminName = adminName;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmailID() {
        return EmailID;
    }

    public void setEmailID(String emailID) {
        EmailID = emailID;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    @Column
    @Id @GeneratedValue(strategy=GenerationType.AUTO)
    String EmailID;

    @Column
    String date;

    @Override
    public void setBeanName(String beanName) {
        System.out.println(beanName);

    }

    @Override
    public void setApplicationContext(ApplicationContext context)
            throws BeansException {
        System.out.println(context);

    }

    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("initialising bean called from after properties set");

    }

    @Override
    public void destroy() throws Exception {
        System.out.println("disposable bean distroy method");

    }

    @PreDestroy
    public void myDestroy(){
        System.out.println("Pre Destroy method from annotation");       
    }

    @PostConstruct
    public void afterConstruct(){
        System.out.println("called after construction from annotation");
    }

}
在DB中保存我的对象的代码

@GET
@Path("/signup/")
public Response responseMsg(@QueryParam("name") String name,
        @DefaultValue("Nothing to say") @QueryParam("email") String email,
        @QueryParam("date") String date, @QueryParam("pass") String pass) {

    Session session = factory.openSession();
    org.hibernate.Transaction tx = session.beginTransaction();

    UserDetails user = (UserDetails) context.getBean("user");

    Address addr = (Address) context.getBean("officeAddress");

    user.setOfficeAddress(addr);

    user.setEmailID(email);
    if (name.length() != 0)
        user.setName(name);
    user.setDate(date);
    user.setPass(pass);

    session.save(user);
    tx.commit();
    session.close();
    return Response.status(200).entity("success").build();

}
spring.xml

    <?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
                           http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/context 
                           http://www.springframework.org/schema/context/spring-context.xsd                           
                           http://www.springframework.org/schema/aop 
                           http://www.springframework.org/schema/aop/spring-aop.xsd
                           http://www.springframework.org/schema/mvc
                           http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <aop:aspectj-autoproxy />
    <bean id="user" class="com.javacodegeeks.enterprise.rest.jersey.UserDetails"
        autowire="byName">

        <property name="adminName" value="Root"></property>
        <property name="name" value="Sparsh"></property>
    </bean>
    <bean id="officeAddress" class="com.javacodegeeks.enterprise.rest.jersey.Address">
        <property name="roomNumber" value="${roomNumber}"></property>
        <property name="streetName" value="office"></property>
    </bean>
    <bean id="homeAddress" class="com.javacodegeeks.enterprise.rest.jersey.Address">
        <property name="roomNumber" value="1"></property>
        <property name="streetName" value="home"></property>
    </bean>

    <bean id="messageSource"
        class="org.springframework.context.support.ResourceBundleMessageSource">
        <property name="basenames">
            <list>
                <value>
                    message
                </value>
            </list>
        </property>
    </bean>
    <bean
        class="com.javacodegeeks.enterprise.rest.jersey.DisplayBeanPostProcessor" />
    <bean class="com.javacodegeeks.enterprise.rest.jersey.DisplayBeanFactory" />
    <bean
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations" value="variable.properties" />
    </bean>
    <!-- <context:component-scan base-package="com.javacodegeeks.enterprise.rest.jersey" 
        /> -->
        <bean name="loggingaspect" class="com.javacodegeeks.enterprise.rest.jersey.AspectClass"/>
</beans>

hibernate.cfg.xml

    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD//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.url">jdbc:mysql://localhost:3306/test
    </property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">root</property>
    <property name="hibernate.connection.pool_size">10</property>
    <property name="show_sql">true</property>
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.current_session_context_class">org.hibernate.context.internal.ThreadLocalSessionContext</property>
    <property name="hbm2ddl.auto">create</property>
    <mapping class="com.javacodegeeks.enterprise.rest.jersey.UserDetails"/>
    </session-factory>
    </hibernate-configuration>
所以错误是表不存在

但无法理解原因

在我的hibernate.cfg.xml中看到

<property name="hbm2ddl.auto">create</property>
创建
它应该负责创建表

请帮帮我,那是罪魁祸首

无法将其设置为自动,而自行设置

@Column
    @Id @GeneratedValue(strategy=GenerationType.AUTO)
    String EmailID;
删除了@GeneratedValue,现在工作正常

可能对以后的人有帮助

@Column
    @Id @GeneratedValue(strategy=GenerationType.AUTO)
    String EmailID;