Java 休眠:无法创建表
这是我的密码: UserDetails.javaJava 休眠:无法创建表,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
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;