刚学JPA  ,照书上的例子敲了下代码,数据库里不能自动建表~代码如下,问高手怎么解决:
persistence.xml<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
          http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="jpaUnit"
transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="update" />

</properties>
</persistence-unit>
</persistence>applicationContext.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="org.git.mm.mysql.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/news"></property>
<property name="username" value="root"></property>
<property name="password" value="wgq"></property>
</bean>
<bean name="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceXmlLocation" value="/WEB-INF/persistence.xml"></property>
<property name="dataSource" ref="dataSource"></property>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HiberateJpaVendorAdapter">
<property name="database" value="MYSQL"></property>
<property name="showSql" value="false"></property>
<property name="generateDdl" value="false"></property>
</bean>

</property>
</bean>
</beans>User.java
import java.util.List;
import javax.persistence.*;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private int id;
private String userName;
private String passWord;
@OneToMany(cascade = CascadeType.ALL,mappedBy="id")
private List<Article> articleList;
public List<Article> getArticleList() {
return articleList;
}
public void setArticleList(List<Article> articleList) {
this.articleList = articleList;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}

}
Article.javaimport javax.persistence.*;@Entity
public class Article {
@Id
@GeneratedValue(strategy=GenerationType.TABLE)
private int id;
private String title;
private String Content;
@ManyToOne
private User user;
public String getContent() {
return Content;
}
public void setContent(String content) {
Content = content;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}

}

解决方案 »

  1.   

    汗,一般不会用这种东西去建表的。我们都是在 PowerDesigner 中把一个一个的表设计好,然后导出建表的 SQL 语句就可以了。
      

  2.   

    貌似配置有错,先看下楼主的代码,
    User中:
    @OneToMany(cascade = CascadeType.ALL,mappedBy="id")
    private List <Article> articleList; Article中:
    @ManyToOne 
    private User user;楼主是想将两个实体建立关系吧?那么mappedBy应该="user"啊
    因为mappedBy="id"的时候,JPA去找Article的id这个属性,找到后发现没有@ManyToOne或@ManyToMany,它就无法给你建表了。