From Gossip@caterpillar

Hibernate Gossip: Query

硓筁org.hibernate.Queryざ龟ㄒㄓ秈︽琩高硓筁Queryざ眤砞﹚琩高把计ぇ硓筁setXXX()单よ猭盢 ﹚把计恶τぃノ–Ω常级糶Ч俱HQL钡ㄓㄒ
Session session = sessionFactory.openSession();
Query query = session.createQuery("select user.name from User as user where user.age > ?");
query.setInteger(0, 25);

List names = query.list();
Iterator iterator =  names.iterator();
while(iterator.hasNext()) {
    System.out.println(iterator.next());
}

session.close();

砞﹚把计ゲ斗ㄌ酚 ? ┮砞﹚抖ㄏノ癸莱篈setXXX()よ猭磅︽ㄒ

Hibernate: select user0_.name as col_0_0_ from user user0_ where user0_.age>?
momor
caterpillar
bush

眤ㄏノ㏑把计Named Parameterㄓ硂よ猭硂ぃノㄌ酚疭﹚抖ㄓ砞﹚把计局Τ耕弄┦钡ㄓㄒ
Session session = sessionFactory.openSession();
Query query = session.createQuery("select user.name from User as user where user.age > :minAge");
query.setInteger("minAge", 25);

List names = query.list();
Iterator iterator =  names.iterator();
while(iterator.hasNext()) {
    System.out.println(iterator.next());
}

session.close();


砞﹚㏑把计ミQueryㄏノ: 蛤帝把计ぇ碞setXXX()よ猭い钡﹚把计ㄓ砞﹚把计τぃノㄌ酚疭﹚抖

盢HQL级糶祘Αぇ磷祑絪絏Hard code祘Αぇい惠璶эHQL碞よ獽*.hbm.xmlいㄏノ<query/>夹乓& lt;![CDATA[籔]] >ぇ丁级糶HQL级糶竚琌</hibernate-mapping>ぇ玡ㄒ

  • User.hbm.xml
<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class name="onlyfun.caterpillar.User" table="user">
<id name="id" column="id">
<generator class="native"/>
</id>
<property name="name" column="name"/>
<property name="age" column="age"/>
</class>

<query name="onlyfun.caterpillar.QueryUser">
<![CDATA[
select user.name from User as user where user.age > :minAge
]]>
</query>
</hibernate-mapping>

<query>name妮┦ノㄓ砞﹚琩高场HQL嘿ㄌ沮ㄏノㄒ
Session session = sessionFactory.openSession();
Query query = session.getNamedQuery("onlyfun.caterpillar.QueryUser");
query.setInteger("minAge", 25);

List names = query.list();
Iterator iterator =  names.iterator();
while(iterator.hasNext()) {
    System.out.println(iterator.next());
}

session.close();