1.建表
		
				 create
				 
				table
				 student
				create
				 
				table
				 student
 (sid 
				varchar
				(
				32
				) 
				not
				 
				null
				 
				primary
				 
				key
				,
(sid 
				varchar
				(
				32
				) 
				not
				 
				null
				 
				primary
				 
				key
				,
 sname 
				varchar
				(
				16
				),
 sname 
				varchar
				(
				16
				),
 sage 
				varchar
				(
				16
				),
 sage 
				varchar
				(
				16
				),
 )
)

 create
				 
				table
				 course
				create
				 
				table
				 course
 (cid 
				varchar
				(
				32
				) 
				not
				 
				null
				 
				primary
				 
				key
				,
(cid 
				varchar
				(
				32
				) 
				not
				 
				null
				 
				primary
				 
				key
				,
 cname 
				varchar
				(
				16
				)
cname 
				varchar
				(
				16
				)
 )
)

 create
				 
				table
				 student_course_link
				create
				 
				table
				 student_course_link
 (sid 
				varchar
				(
				32
				) 
				not
				 
				null
				,
(sid 
				varchar
				(
				32
				) 
				not
				 
				null
				,
 cid 
				varchar
				(
				32
				) 
				not
				 
				null
				,
cid 
				varchar
				(
				32
				) 
				not
				 
				null
				,
 primary
				 
				key
				(sid,cid)
				primary
				 
				key
				(sid,cid)
 )
)
 
		 2.写VO
StudentVO
 package com.test;
package com.test;
 import java.util.Set;
import java.util.Set;
 public class Student
public class Student


 {
{
 private String sid;
    private String sid;
 private String sname;
    private String sname;
 private String sage;
    private String sage;

 private Set course;
    private Set course;
 public Student()
    public Student()

 
     {
{
 }
    }
 //写上get set
   //写上get setCourse vo
 package com.test;
package com.test;

 import java.util.Set;
import java.util.Set;

 public class Course
public class Course


 {
{
 private String cid;
    private String cid;
 private String cname;
    private String cname;
 private Set student;
    private Set student;
 //写上get set
   //写上get set写配置文件
Student.hbm.xml
 <?xml version="1.0"?>
<?xml version="1.0"?>
 <!DOCTYPE hibernate-mapping
<!DOCTYPE hibernate-mapping
 PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
    PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
 "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

 <hibernate-mapping>
<hibernate-mapping>

 <class name="com.test.Student" table="student" >
    <class name="com.test.Student" table="student" >

 <id name="sid" type="string" unsaved-value="null" >
        <id name="sid" type="string" unsaved-value="null" >
 <column name="sid" sql-type="char(32)" not-null="true"/>
            <column name="sid" sql-type="char(32)" not-null="true"/>
 <generator class="uuid.hex"/>
            <generator class="uuid.hex"/>
 </id>
        </id>

 <property name="sname">
        <property name="sname">
 <column name="sname" sql-type="varchar(16)" not-null="true"/>
            <column name="sname" sql-type="varchar(16)" not-null="true"/>
 </property>
        </property>

 <property name="sage">
        <property name="sage">
 <column name="sage" sql-type="varchar(16)" not-null="true"/>
            <column name="sage" sql-type="varchar(16)" not-null="true"/>
 </property>
        </property>

 <set name="course" table="student_course_link" cascade="all" outer-join="false">
        <set name="course" table="student_course_link" cascade="all" outer-join="false">
 <key column="sid"/>
            <key column="sid"/>
 <many-to-many class="com.test.Course" column="cid"/>
            <many-to-many class="com.test.Course" column="cid"/>
 </set>
        </set>
 
   
 </class>
    </class>

 </hibernate-mapping>
</hibernate-mapping>Course.hbm.xml
 <?xml version="1.0"?>
<?xml version="1.0"?>
 <!DOCTYPE hibernate-mapping
<!DOCTYPE hibernate-mapping
 PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
    PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
 "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

 <hibernate-mapping>
<hibernate-mapping>

 <class name="com.test.Course" table="course" >
    <class name="com.test.Course" table="course" >

 <id name="cid" type="string" unsaved-value="null" >
        <id name="cid" type="string" unsaved-value="null" >
 <column name="cid" sql-type="char(32)" not-null="true"/>
            <column name="cid" sql-type="char(32)" not-null="true"/>
 <generator class="uuid.hex"/>
            <generator class="uuid.hex"/>
 </id>
        </id>

 <property name="cname">
        <property name="cname">
 <column name="cname" sql-type="varchar(16)" not-null="true"/>
            <column name="cname" sql-type="varchar(16)" not-null="true"/>
 </property>
        </property>

 <set name="student" table="student_course_link" lazy="false" cascade="all">
        <set name="student" table="student_course_link" lazy="false" cascade="all">
 <key column="cid"/>
            <key column="cid"/>
 <many-to-many class="com.test.Student" column="sid"/>
            <many-to-many class="com.test.Student" column="sid"/>
 </set>
        </set>
 
   
 </class>
    </class>

 </hibernate-mapping>
</hibernate-mapping>接着把下面的hibernate.properties文件拷到classes目录下。。这里用的是mysql
 hibernate.query.substitutions true 1, false 0, yes 'Y', no 'N'
hibernate.query.substitutions true 1, false 0, yes 'Y', no 'N'
 ## MySQL
## MySQL
 hibernate.dialect net.sf.hibernate.dialect.MySQLDialect
hibernate.dialect net.sf.hibernate.dialect.MySQLDialect
 hibernate.connection.driver_class org.gjt.mm.mysql.Driver
hibernate.connection.driver_class org.gjt.mm.mysql.Driver
 hibernate.connection.url jdbc:mysql://localhost:3306/wjcms
hibernate.connection.url jdbc:mysql://localhost:3306/wjcms
 hibernate.connection.username root
hibernate.connection.username root
 hibernate.connection.password wujun
hibernate.connection.password wujun
 hibernate.connection.pool_size 1
hibernate.connection.pool_size 1
 hibernate.proxool.pool_alias pool1
hibernate.proxool.pool_alias pool1
 hibernate.show_sql true
hibernate.show_sql true
 hibernate.jdbc.batch_size 0
hibernate.jdbc.batch_size 0
 hibernate.max_fetch_depth 1
hibernate.max_fetch_depth 1
 hibernate.cache.use_query_cache true
hibernate.cache.use_query_cache true 写测试类了..
 package com.test;
package com.test;

 import net.sf.hibernate.Session;
import net.sf.hibernate.Session;
 import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.SessionFactory;
 import net.sf.hibernate.cfg.Configuration;
import net.sf.hibernate.cfg.Configuration;
 import net.sf.hibernate.*;
import net.sf.hibernate.*;
 import java.util.Set;
import java.util.Set;
 import java.util.HashSet;
import java.util.HashSet;
 import java.sql.*;
import java.sql.*;
 import java.util.List;
import java.util.List;
 import java.util.Iterator;
import java.util.Iterator;

 public class TestManyToMany
public class TestManyToMany


 {
{
 SessionFactory sf;
    SessionFactory sf;
 Session session;
    Session session;
 public TestManyToMany()
    public TestManyToMany()

 
     {
{
 try
        try

 
         {
{
 Configuration cfg = new Configuration();
            Configuration cfg = new Configuration();
 sf = cfg.addClass(Student.class).addClass(Course.class).buildSessionFactory();
            sf = cfg.addClass(Student.class).addClass(Course.class).buildSessionFactory();
 }
        }
 catch(HibernateException ex)
        catch(HibernateException ex)

 
         {
{
 ex.printStackTrace();
            ex.printStackTrace();
 }
        }
 }
    }
 public void doCreate()
    public void doCreate()

 
     {
{
 try
        try

 
         {
{
 session = sf.openSession();
            session = sf.openSession();

 Student student = new Student();
            Student student = new Student();
 student.setSname("小王");
            student.setSname("小王");
 student.setSage("22");
            student.setSage("22");

 Set courseSet = new HashSet();
            Set courseSet = new HashSet();
 Course course = null;
            Course course = null;
 for(int i=0;i<2;i++)
            for(int i=0;i<2;i++)

 
             {
{
 course = new Course();
                course = new Course();
 if(i==0)
                if(i==0)
 course.setCname("c++");
                    course.setCname("c++");
 else if(i==1)
                else if(i==1)
 course.setCname("java");
                    course.setCname("java");
 courseSet.add(course);
                courseSet.add(course);
 }
            }
 student.setCourse(courseSet);
            student.setCourse(courseSet);
 
            
 session.save(student);
            session.save(student);
 session.flush();
            session.flush();
 session.connection().commit();
            session.connection().commit();

 }
        }
 catch(HibernateException ex)
        catch(HibernateException ex)

 
         {
{
 ex.printStackTrace();
            ex.printStackTrace();
 }
        }
 catch(SQLException ex1)
        catch(SQLException ex1)

 
         {
{
 ex1.printStackTrace();
            ex1.printStackTrace();
 }
        }
 finally
        finally

 
         {
{

 try
                try {
{
 session.close();
                    session.close();
 }
                }

 catch(HibernateException ex2)
                catch(HibernateException ex2) {
{
 }
                }
 }
        }

 }
    }
 public void doQuery()
    public void doQuery()

 
     {
{

 try
        try {
{
 session = sf.openSession();
            session = sf.openSession();
 Query q = session.createQuery("select s from Student as s");
            Query q = session.createQuery("select s from Student as s");
 List l = q.list();
            List l = q.list();
 Student s = null;
            Student s = null;
 Course course = null;
            Course course = null;
 for(int i=0;i<l.size();i++)
            for(int i=0;i<l.size();i++)

 
             {
{
 s = (Student)l.get(i);
                s = (Student)l.get(i);
 System.out.println("姓名: "+s.getSname());
                System.out.println("姓名: "+s.getSname());
 System.out.println("年龄: "+s.getSage());
                System.out.println("年龄: "+s.getSage());
 System.out.println("所选的课程:");
                System.out.println("所选的课程:");
 Iterator it = s.getCourse().iterator();
                Iterator it = s.getCourse().iterator();
 while(it.hasNext())
                while(it.hasNext())

 
                 {
{
 course = (Course)it.next();
                    course = (Course)it.next();
 System.out.println("课程名: "+course.getCname());
                    System.out.println("课程名: "+course.getCname());
 }
                }


 }
            }

 }
        }

 catch(HibernateException ex)
        catch(HibernateException ex) {
{
 ex.printStackTrace();
            ex.printStackTrace();
 }
        }

 finally
        finally {
{

 try
            try {
{
 session.close();
                session.close();
 }
            }

 catch(HibernateException ex2)
            catch(HibernateException ex2) {
{
 }
            }
 }
        }
 }
    }
 public static void main(String[] args)
    public static void main(String[] args)

 
     {
{
 TestManyToMany t = new TestManyToMany();
        TestManyToMany t = new TestManyToMany();
 //t.doCreate();
        //t.doCreate();
 t.doQuery();
        t.doQuery();
 }
    }
 }
}

 
好。。可以了。。