最近学习Hibernate框架  遇到了如下问题  看了各种大神的相关解答,依旧没能解决我的问题,希望高手指点下迷津。以下是我的相关代码:
Person2.java:
import java.util.ArrayList;
import java.util.List;import javax.persistence.*;@Entity
// 声明为实体类
@Table(name = "tb_person2")
// 声名表名
public class Person2 { @Id
// 声明主键
@GeneratedValue(strategy = GenerationType.AUTO)
// 声明主键生成规则

private Integer id; private String name;

@OneToMany(fetch = FetchType.EAGER, targetEntity = Email.class, cascade = {
CascadeType.PERSIST, CascadeType.REMOVE, CascadeType.MERGE,
CascadeType.REFRESH })
// 一对多配置,并配置列关系
@JoinColumns(value = { @JoinColumn(name = "person id", referencedColumnName = "id") })
@OrderBy(value = "email desc")
// 配置排序关系

private List<Email> emails = new ArrayList<Email>(); public List<Email> getEmails() {
return emails;
} public void setEmails(List<Email> emails) {
this.emails = emails;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}
Email.java
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;@Entity
@Table(name = "tb_email")
public class Email { @Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id; private String email; public String getEmail() {
return email;
} public void setEmail(String email) {
this.email = email;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
}}
hibernate.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory> <property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/hibernate1?characterEncoding=UTF-8
</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property> <property name="dialect">
org.hibernate.dialect.MySQL5Dialect
</property> <property name="show_sql">true</property>
<property name="hbm2ddl.auto">create</property> <!-- 要加这一句  否则可能会遇到异常 -->
<property name="current_session_context_class">thread</property>
<mapping class="com.zy.bean.Cat" />
<mapping class="com.zy.bean.Person2" />
<mapping class="com.zy.bean.Email" />
</session-factory></hibernate-configuration>
Test.java
package com.zy.test;import java.util.List;import org.hibernate.Session;import com.zy.bean.Email;
import com.zy.bean.Person2;
import com.zy.util.HibernateSessionFactory;public class TestAnnotationedPersonEmail { public static void main(String[] args) throws Exception { Person2 person = new Person2();
person.setName("Jane"); Email email = new Email();
email.setEmail("[email protected]");
person.getEmails().add(email); email = new Email();
email.setEmail("[email protected]");
person.getEmails().add(email); Session session = HibernateSessionFactory.getSession();
session.beginTransaction(); // 保存 Person 对象,会自动级联保存 Email 对象
session.persist(person); // 查找拥有 雅虎中文邮箱 的所有用户
List list = session.createQuery(
" select p from Person2 p left join fetch p.emails e "
+ " where e.email like '%@yahoo.com.cn' ").list(); // 输出用户及其所有的用户
for (Person2 p : (List<Person2>) list) {
System.out.println("Person: " + p.getName());
for (Email e : p.getEmails()) {
System.out.println("\tEmail: " + e.getEmail());
}
} // 删除 Person 对象,会自动级联删除属于它的 Email 数据库记录
session.delete(person); session.getTransaction().commit();
session.close(); }
}
在数据库中 只插入了person2表  而email表插不进  不知怎么回事??、hibernate异常