日期:2014-05-19  浏览次数:20710 次

用JPA为什么总创建不了mysql数据库的表

package lee;

import java.util.List;
import javax.persistence.*;

import org.crazyit.model.*;


public class JpaQs
{
//一个持久单元对应一个EntityManagerFactory
private static final EntityManagerFactory emf = 
Persistence.createEntityManagerFactory("qs");

public static void main(String[] args)
{
final EntityManager em = emf.createEntityManager();
News news = new News();
news.setTitle("asd");
news.setContent("zxc");
try
{
//开启事务
em.getTransaction().begin();
//保存实体
em.persist(news);
//提交事务
em.getTransaction().commit();

finally 
{
em.close();
}
}
}


package org.crazyit.model;

import javax.persistence.*;

@Entity
@Table(name="hello")
public class News
{
//消息类的标识属性
@Id /* 用于修饰标识属性 */
/* 指定该主键列的主键生成策略 */
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
//消息标题
/* @Column指定该Field映射的列信息,此处指定了列名、长度 */
@Column(name="name" , length=50)
private String title;
//消息内容
/* @Column指定该Field映射的列信息,此处指定允许为null */
@Column(nullable=true)
private String content;
//构造器
public News()
{
}
//标识属性的setter和getter方法
public void setId(int id) 
{
this.id = id; 
}
public int getId()
{
return (this.id); 
}
//消息标题的setter方法和getter方法
public void setTitle(String title) 
{
this.title = title; 
}
public String getTitle() 
{
return (this.title); 
}
//消息内容的setter方法和getter方法
public void setContent(String content)
{
this.content = content; 
}
public String getContent()
{
return (this.content); 
}
}

<?xml version="1.0" encoding="GBK"?>
<persistence version="1.0" 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">
<!-- 为持久化单元指定名称,并通过transaction-type指定事务类型
transaction-type属性合法的属性值有JTA、RESOURCE_LOCAL两个-->
<persistence-unit name="qs" transaction-type="RESOURCE_LOCAL">
<!-- 指定javax.persistence.spi.PersistenceProvider实现类 -->
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<!-- 列出该应用需要访问的所有的Entity类, 
也可以用 <mapping-file> 或<jar-file>元素来定义 -->
<class>org.crazyit.model.News</class>
<!-- properties元素用于为特定JPA实现包配置属性 -->  
<!-- 下面列举的是Hibernate JPA实现中可以配置的部分属性 -->
<properties>  
<!-- 指定连接数据库的驱动名 -->
<property name="hibernate.connection.driver_class"
value="com.mysql.jdbc.Driver"/>
<!-- 指定连接数据库的URL -->
<property name="hibernate.connection.url"
value="jdbc:mysql://localhost:3306/test"/>
<!-- 指定连接数据库的用户名 --&