hql语句查询(命名查询)

来源:互联网 发布:安装包异常 淘宝伴侣 编辑:程序博客网 时间:2024/06/09 00:21

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();
}

}
}

0 0
原创粉丝点击