Person.java文件
package com.wang.bean;
import java.util.HashSet;
import java.util.Set;
public class Person {
private int id;
private String name;
private int age;
private MyEvent myEvent;
private Set<String> emails = new HashSet<String>();
public Person() {}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public MyEvent getMyEvent() {
return myEvent;
}
public void setMyEvent(MyEvent myEvent) {
this.myEvent = myEvent;
}
public Set<String> getEmails() {
return emails;
}
public void setEmails(Set<String> emails) {
this.emails = emails;
}
}
MyEvent.java文件
package com.wang.bean;
import java.util.*;
public class MyEvent
{
private int id;
private String title;
private Date happenDate;
private Set<Person> actors = new HashSet<Person>();
public MyEvent()
{
}
public MyEvent(String title , Date happenDate)
{
this.title = title;
this.happenDate = happenDate;
}
public void setId(int id)
{
this.id = id;
}
public int getId()
{
return this.id;
}
public void setTitle(String title)
{
this.title = title;
}
public String getTitle()
{
return this.title;
}
public void setHappenDate(Date happenDate)
{
this.happenDate = happenDate;
}
public Date getHappenDate()
{
return this.happenDate;
}
public void setActors(Set<Person> actors)
{
this.actors = actors;
}
public Set<Person> getActors()
{
return this.actors;
}
}
Person.hbm.xml文件
<?xml version="1.0" encoding="utf8"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.wang.bean">
<class name="Person" table="person">
<id name="id" column="person_id">
<generator class="increment" />
</id>
<property name="name" type="string" />
<property name="age" type="int" />
<many-to-one name="myEvent" column="event_id" class="MyEvent" />
<set name="emails" table="person_email">
<key column="person_id" />
<element type="string" column="email" />
</set>
</class>
<query name="test">
from Person p where p.myEvent.title = ?
</query>
</hibernate-mapping>
MyEvent.hbm.xml文件
<?xml version="1.0" encoding="utf8"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.wang.bean">
<class name="MyEvent" table="event_table">
<id name="id" column="event_id">
<generator class="increment"/>
</id>
<property name="happenDate" type="date"/>
<property name="title" type="string"/>
<set name="actors" table="person"
inverse="true">
<key column="event_id"/>
<one-to-many class="Person"/>
</set>
</class>
</hibernate-mapping>
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">oracle.jdbc.driver.OracleDriver</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<property name="connection.username">GUO</property>
<property name="connection.password">930603</property>
<property name="connection.pool_size">2</property>
<property name="dialect">org.hibernate.dialect.OracleDialect</property>
<property name="show_sql">false</property>
<property name="hbm2ddl.auto">create</property>
<mapping resource="com/wang/bean/MyEvent.hbm.xml"/>
<mapping resource="com/wang/bean/Person.hbm.xml"/>
</session-factory>
</hibernate-configuration>
测试文件
package com.wang.test;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.wang.bean.MyEvent;
import com.wang.bean.Person;
public class Test {
public static void main(String[] args) {
Configuration conf = new Configuration().configure();
SessionFactory sf = conf.buildSessionFactory();
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
Person p1= new Person("Peter Parker", 24);
Person p2= new Person("Tony Stark", 40);
Person p3= new Person("Clark Kent", 25);
session.save(p1);
session.save(p2);
session.save(p3);
MyEvent myEvent1 = new MyEvent("Spider Man", new Date());
MyEvent myEvent2 = new MyEvent("Iron Man", new Date());
MyEvent myEvent3 = new MyEvent("Super Man", new Date());
session.save(myEvent1);
session.save(myEvent2);
session.save(myEvent3);
p1.setMyEvent(myEvent1);
p2.setMyEvent(myEvent2);
p3.setMyEvent(myEvent3);
List pl1 = session.createQuery("select distinct p from Person p")
.list();
for (Iterator<Person> pit = pl1.iterator() ; pit.hasNext(); )
{
Person p = (Person)pit.next();
System.out.println(p.getName() + " " + p.getAge());
}
System.out.println("===============================");
List pl2 = session.getNamedQuery("test")
.setString(0, "Spider Man")
.list();
for (Iterator<Person> pit = pl2.iterator() ; pit.hasNext(); )
{
Person p = (Person)pit.next();
System.out.println(p.getName()+" "+p.getAge());
}
System.out.println("===============================");
try{
tx.commit();
session.close();
sf.close();
}finally{
session.close();
}
}
}