您的位置:首页 > 数据库

hql语句查询(命名查询)

2014-05-06 16:47 267 查看
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();
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 sql jdbc