many-to-many

Work.java

package com.javamodel.hibernate;

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

public class Work {
    
    private String id = null;
    private String title = null;
    private Set authors = new HashSet(); 
    
    public Work(){}
    
    
    /**
     * @return
     */
    public Set getAuthors() {
        return authors;
    }

    /**
     * @return
     */
    public String getId() {
        return id;
    }

    /**
     * @return
     */
    public String getTitle() {
        return title;
    }

    /**
     * @param set
     */
    public void setAuthors(Set set) {
        authors = set;
    }

    /**
     * @param string
     */
    public void setId(String string) {
        id = string;
    }

    /**
     * @param string
     */
    public void setTitle(String string) {
        title = string;
    }

}

work.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" >
<hibernate-mapping>
    <class name="com.javamodel.hibernate.Work" table="work" > 
        <id name="id" column="id">
            <generator class="uuid.hex"/>
        </id>
        <property name="title" column="title" />
            <!--多对多没有什么主次之分了,描述好以后,会自动产生一个中间表,记住两边都要save-->
        <set name="authors" table="author_work" inverse="true">
          <key column="work_id"/> 
          <many-to-many column="author_id" class="com.javamodel.hibernate.Author" />
        </set>
    </class>
</hibernate-mapping>

Author.java加上

private Set works = new HashSet();//get,set

author.hbm.xml加上

<code> <set name="works" table="author_work">

<key column="author_id"/>

<many-to-many column="work_id" class="com.javamodel.hibernate.Work" />

</set>

</code>

Example.java

package com.javamodel.hibernate;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.apache.log4j.Logger;

import net.sf.hibernate.HibernateException;
import net.sf.hibernate.MappingException;
import net.sf.hibernate.Session;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.Transaction;
import net.sf.hibernate.cfg.Configuration;


public class Example{
    
    private static Logger logger = Logger.getLogger(Example.class); 
    private static SessionFactory _sessions = null;
    private static Properties pops = new Properties();
    
    static{
        try {
            InputStream stream = Example.class.getResourceAsStream("hibernate.properties");
            try {
                pops.load(stream);
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            
            Configuration cfg = new Configuration();
            cfg.addClass(Person.class);
            cfg.addClass(Author.class);
            cfg.addClass(Publication.class);
            cfg.addClass(Work.class);
            cfg.setProperties(pops);
            _sessions = cfg.buildSessionFactory();
            
        } catch (MappingException e) {
           e.printStackTrace();
        } catch (HibernateException e) {
           e.printStackTrace();
        }
    
    }
    
    public static void main(String[] args) throws HibernateException {
        
        Person person1 = new Person();
        person1.setName("HengfeiDo1");
        person1.setEmail("smallduzi@sohu.com");
        
        Person person2 = new Person();
        person2.setName("HengfeiDo2");
        person2.setEmail("smallduzi@sohu.com");
        
        Person person3 = new Person();
        person3.setName("HengfeiDo3");
        person3.setEmail("smallduzi@sohu.com");
        
        Person person4 = new Person();
        person4.setName("HengfeiDo4");
        person4.setEmail("smallduzi@sohu.com");
        
        Publication publication1 = new Publication();
        publication1.setBookName("AAA");
        publication1.setDataTime("20031224");
        Publication publication2 = new Publication();
        publication2.setBookName("BBB");
        publication2.setDataTime("20031225");
        
        Publication publication3 = new Publication();
        publication3.setBookName("CCC");
        publication3.setDataTime("20031226");
        Publication publication4 = new Publication();
        publication4.setBookName("DDD");
        publication4.setDataTime("20031227");
        
        Publication publication5 = new Publication();
        publication5.setBookName("EEE");
        publication5.setDataTime("20031228");
        Publication publication6 = new Publication();
        publication6.setBookName("FFF");
        publication6.setDataTime("20031229");
        
        Publication publication7 = new Publication();
        publication7.setBookName("GGG");
        publication7.setDataTime("20031230");
        Publication publication8 = new Publication();
        publication8.setBookName("HHH");
        publication8.setDataTime("20031231");
        
        Author author1 = new Author();
        author1.setAlias("smallduzi");
        author1.setPerson(person1);
        author1.getPublications().add(publication1);
        author1.getPublications().add(publication2);
        
        Author author2 = new Author();
        author2.setAlias("adu");
        author2.setPerson(person2);
        author2.getPublications().add(publication3);
        author2.getPublications().add(publication4);
        
        Author author3 = new Author();
        author3.setAlias("dududu");
        author3.setPerson(person3);
        author3.getPublications().add(publication5);
        author3.getPublications().add(publication6);
        
        Author author4 = new Author();
        author4.setAlias("xiaoduzi");
        author4.setPerson(person4);
        author4.getPublications().add(publication7);
        author4.getPublications().add(publication8);
        
        publication1.setAuthor(author1);
        publication2.setAuthor(author1);
                
        publication3.setAuthor(author2);
        publication4.setAuthor(author2);
        
        publication5.setAuthor(author3);
        publication6.setAuthor(author3);
        
        publication7.setAuthor(author4);
        publication8.setAuthor(author4);
        
        
        Work work1 = new Work();
        work1.setTitle("111111");
        work1.getAuthors().add(author1);
        work1.getAuthors().add(author2);
        
        Work work2 = new Work();
        work2.setTitle("222222");
        work2.getAuthors().add(author3);
        work2.getAuthors().add(author4);
        
        Work work3 = new Work();
        work3.setTitle("333333");
        work3.getAuthors().add(author1);
        work3.getAuthors().add(author2);
        
        Work work4 = new Work();
        work4.setTitle("444444");
        work4.getAuthors().add(author3);
        work4.getAuthors().add(author4);
        
        author1.getWorks().add(work1);
        author1.getWorks().add(work3);
        author2.getWorks().add(work2);
        author2.getWorks().add(work4);
        //这里写的罗嗦点。希望大家能看懂

        Session session = _sessions.openSession();
        
        Transaction tx = null;
        try{
            tx = session.beginTransaction();
            session.save(author1);
            session.save(author2);
            session.save(author3);
            session.save(author4);
            session.save(work1);
            session.save(work2);
            session.save(work3);
            session.save(work4);
            tx.commit();
            System.out.println("---over---");
        }catch(HibernateException he){
            if(tx != null) tx.rollback();
            throw he;
        }
        finally{
            session.close();
        }
        
    }
    
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值