锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
net.sf.hibernate.Criteria榪欎釜鎺ュ彛浠h〃瀵逛竴涓壒瀹氱殑鎸佷箙鍖栫被鐨勬煡璇€係ession鏄敤鏉ュ埗閫燙riteria瀹炰緥鐨勫伐鍘傘?nbsp;
Criteria crit = sess.createCriteria(Cat.class);
crit.setMaxResults(50);
List cats = crit.list();
2銆佺緝?yōu)畯缁撴灉闆嗚寖鍥?/strong>
涓涓煡璇㈡潯浠?Criterion)鏄痭et.sf.hibernate.expression.Criterion鎺ュ彛鐨勪竴涓疄渚嬨傜被net.sf.hibernate.expression.Expression瀹氫箟浜?jiǎn)鑾峰緱涓浜涘唴緗殑Criterion綾誨瀷銆?nbsp;
List cats = sess.createCriteria(Cat.class)
.add( Expression.like("name", "Fritz%") )
.add( Expression.between("weight", minWeight, maxWeight) )
.list();
琛ㄨ揪寮忥紙Expressions錛夊彲浠ユ寜鐓ч昏緫鍒嗙粍.
List cats = sess.createCriteria(Cat.class)
.add( Expression.like("name", "Fritz%") )
.add( Expression.or(
Expression.eq( "age", new Integer(0) ),
Expression.isNull("age")
) )
.list();
List cats = sess.createCriteria(Cat.class)
.add( Expression.in( "name", new String[] { "Fritz", "Izi", "Pk" } ) )
.add( Expression.disjunction()
.add( Expression.isNull("age") )
.add( Expression.eq("age", new Integer(0) ) )
.add( Expression.eq("age", new Integer(1) ) )
.add( Expression.eq("age", new Integer(2) ) )
) )
.list();
鏈夊緢澶氶鍒剁殑鏉′歡綾誨瀷錛圗xpression鐨勫瓙綾伙級(jí)銆傛湁涓涓壒鍒湁鐢紝鍙互璁╀綘鐩存帴宓屽叆SQL銆?nbsp;
List cats = sess.createCriteria(Cat.class)
.add( Expression.sql("lower($alias.name) like lower(?)", "Fritz%", Hibernate.STRING) )
.list();
鍏朵腑鐨剓alias}鏄竴涓崰浣嶇錛屽畠?yōu)畣浼?xì)琚墍鏌ヨ瀹炰綋鐨勮鍒悕鎵鏇夸唬銆?鍘熸枃:The {alias} placeholder with be replaced by the row alias of the queried entity.)
3銆佸緇撴灉鎺掑簭
鍙互浣跨敤net.sf.hibernate.expression.Order瀵圭粨鏋滈泦鎺掑簭.
List cats = sess.createCriteria(Cat.class)
.add( Expression.like("name", "F%")
.addOrder( Order.asc("name") )
.addOrder( Order.desc("age") )
.setMaxResults(50)
.list();
4銆佸叧鑱旓紙Associations錛?/strong>
浣犲彲浠ュ湪鍏寵仈涔嬮棿浣跨敤createCriteria()錛屽緢瀹規(guī)槗鍦板湪瀛樺湪鍏崇郴鐨勫疄浣撲箣闂存寚瀹氱害鏉熴?nbsp;
List cats = sess.createCriteria(Cat.class)
.add( Expression.like("name", "F%")
.createCriteria("kittens")
.add( Expression.like("name", "F%")
.list();
娉ㄦ剰錛岀浜屼釜createCriteria()榪斿洖涓涓狢riteria鐨勬柊瀹炰緥錛屾寚鍚慿ittens闆嗗悎綾葷殑鍏冪礌銆?nbsp;
涓嬮潰鐨勬浛浠e艦寮忓湪鐗瑰畾鎯呭喌涓嬫湁鐢ㄣ?nbsp;
List cats = sess.createCriteria(Cat.class)
.createAlias("kittens", "kt")
.createAlias("mate", "mt")
.add( Expression.eqProperty("kt.name", "mt.name") )
.list();
錛坈reateAlias()錛夊茍涓嶄細(xì)鍒涘緩涓涓狢riteria鐨勬柊瀹炰緥銆傦級(jí)
璇鋒敞鎰忥紝鍓嶉潰涓や釜鏌ヨ涓瑿at瀹炰緥鎵鎸佹湁鐨刱ittens闆嗗悎綾誨茍娌℃湁閫氳繃criteria棰勫厛榪囨護(hù)錛佸鏋滀綘甯屾湜鍙繑鍥炴弧瓚蟲潯浠剁殑kittens,浣犲繀欏諱嬌鐢╮eturnMaps()銆?nbsp;
List cats = sess.createCriteria(Cat.class)
.createCriteria("kittens", "kt")
.add( Expression.eq("name", "F%") )
.returnMaps()
.list();
Iterator iter = cats.iterator();
while ( iter.hasNext() ) {
Map map = (Map) iter.next();
Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS);
Cat kitten = (Cat) map.get("kt");
}
5銆佸姩鎬佸叧鑱斿璞¤幏鍙栵紙Dynamic association fetching錛?br>鍙互鍦ㄨ繍琛屾椂閫氳繃setFetchMode()鏉ユ敼鍙樺叧鑱斿璞¤嚜鍔ㄨ幏鍙栫殑絳栫暐銆?nbsp;
List cats = sess.createCriteria(Cat.class)
.add( Expression.like("name", "Fritz%") )
.setFetchMode("mate", FetchMode.EAGER)
.list();
榪欎釜鏌ヨ浼?xì)閫氳繃澶栬繛鎺?outer join)鍚屾椂鑾峰緱 mate鍜宬ittens銆?nbsp;
6銆佹牴鎹ず渚嬫煡璇紙Example queries錛?/strong>
net.sf.hibernate.expression.Example綾誨厑璁鎬綘浠庢寚瀹氱殑瀹炰緥鍒涢犳煡璇㈡潯浠躲?nbsp;
Cat cat = new Cat();
cat.setSex('F');
cat.setColor(Color.BLACK);
List results = session.createCriteria(Cat.class)
.add( Example.create(cat) )
.list();
鐗堟湰灞炴э紝琛ㄧず絎﹀睘鎬у拰鍏寵仈閮戒細(xì)琚拷鐣ャ傞粯璁ゆ儏鍐典笅錛宯ull鍊肩殑灞炴т篃琚帓闄ゅ湪澶栥?nbsp;
You can adjust how the Example is applied. 浣犲彲浠ヨ皟鏁寸ず渚?Example)濡備綍搴旂敤銆?nbsp;
Example example = Example.create(cat)
.excludeZeroes() //exclude zero valued properties
.excludeProperty("color") //exclude the property named "color"
.ignoreCase() //perform case insensitive string comparisons
.enableLike(); //use like for string comparisons
List results = session.createCriteria(Cat.class)
.add(example)
.list();
浣犵敋鑷沖彲浠ョ敤紺轟緥瀵瑰叧鑱斿璞″緩绔媍riteria銆?nbsp;
List results = session.createCriteria(Cat.class)
.add( Example.create(cat) )
.createCriteria("mate")
.add( Example.create( cat.getMate() ) )
.list();