配置文件
hibernate.cfg.xml
/p>
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
jdbc:mysql://localhost:3306/test
root
root
org.hibernate.dialect.MySQLDialect
com.mysql.jdbc.Driver
true
Student.java
package tests.cn.com.taiji.sms.entiry;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import tests.cn.com.taiji.sms.entiry.Book;
@Entity
@Table(name="stuent")
public class Student
{
@Id
@Column(name="id")
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String memo;
private String name;
private List book;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column(name="meno")
public String getMemo() {
return memo;
}
public void setMemo(String memo) {
this.memo = memo;
}
@Column(name="name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@OneToMany(mappedBy="student",cascade=CascadeType.ALL,fetch=FetchType.LAZY)
public List getBook()
{
return book;
}
public void setBook(List book)
{
this.book = book;
}
}
BOOK.java
package tests.cn.com.taiji.sms.entiry;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name="zqBook")
public class Book
{
@Id
@Column(name="id")
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String title;
private Student student;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Column(name="title")
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
@ManyToOne(cascade=CascadeType.REFRESH,optional=false)
@JoinColumn(name="stu_id",referencedColumnName="id")
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
}
StudentBookManager
package tests.cn.com.taiji.mhsms.manager;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import tests.cn.com.taiji.mhsms.web.BasicSessionFactory;
import tests.cn.com.taiji.sms.entiry.Book;
import tests.cn.com.taiji.sms.entiry.Student;
public class StudentBookManager
{
public static void main(String[] args)
{
Student student=new Student();
Book book1=new Book();
Book book2=new Book();
student.setName("王11");
List listBook=new ArrayList();
book1.setTitle("英语");
book2.setTitle("语文");
book1.setStudent(student);
book2.setStudent(student);
listBook.add(book1);
listBook.add(book2);
student.setBook(listBook);
Session session=null;
Transaction tx=null;
try
{
SessionFactory sessionFactory=BasicSessionFactory.sessionFactory;
session=sessionFactory.openSession();
tx=session.beginTransaction();
tx.begin();
session.save(student);
tx.commit();
}catch(Exception e)
{
e.printStackTrace();
}
finally
{
//session.close();
}
}
}
公共类:
BasicSessionFactory
package tests.cn.com.taiji.mhsms.web;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
public class BasicSessionFactory
{
public static SessionFactory sessionFactory;
static
{
sessionFactory=new AnnotationConfiguration().configure("/hibernate/hibernate.cfg.xml").buildSessionFactory();///注意是AnnotationConfiguration,而不是Configuration
}
}
--------------------------------
在运行StudentBookManager时,出现
Exception in thread "main" java.lang.ExceptionInInitializerError
at tests.cn.com.taiji.mhsms.manager.StudentBookManager.main(StudentBookManager.java:39)
Caused by: org.hibernate.MappingException: Could not determine type for: java.util.List, at table: stuent, for columns: [org.hibernate.mapping.Column(book)]
自己试了试将,将标注写到字段上就不会出现这些问题!
我们现在做的工程,就完全可以写在get方法上,请各位高人给指点一下为啥不能写在get方法上呢?自己从网上搜了一下,说必须要么全部写在字段上,要么全部写在get 方法上,但我的这个都是写在了get方法上,为什么还是不行呢?
解决方案:
自己试了近两天,终于将问题找出来了,在一个实体文件中,注解要么全部放在字段上,要么全部放在get方法上,不能混合使用!
2010年8月26日 15:32