新聞中心
1、從Hibernate3.0.x/3.1.x升級(jí)到***的Hibernate3.2,一定要注意,Hibernate3.2的很多sql函數(shù)如count(), sum()的唯一返回值已經(jīng)從Integer變?yōu)長(zhǎng)ong,如果不升級(jí)代碼,會(huì)得到一個(gè)ClassCastException。這個(gè)變化主要是為了兼容JPA,可以在Hibernate.org的***文檔中找到說(shuō)明。

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到臥龍網(wǎng)站設(shè)計(jì)與臥龍網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站建設(shè)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請(qǐng)、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋臥龍地區(qū)。
Hibernate Team也提供了一個(gè)與原來(lái)兼容的解決方案:
- Configuration classicCfg = new Configuration();
- classicCfg.addSqlFunction( "count", new ClassicCountFunction());
- classicCfg.addSqlFunction( "avg", new ClassicAvgFunction());
- classicCfg.addSqlFunction( "sum", new ClassicSumFunction());
- SessionFactory classicSf = classicCfg.buildSessionFactory();
或
int count = ((Integer)q.uniqueResult()).intValue();改成 int count = ((Number)q.uniqueResult()).intValue(); 這樣就可以兩個(gè)版本同時(shí)兼容。
2、Hibernate3.2要求ehcache1.2
3、session.createSQLQuery(sql).executeUpdate();這個(gè)Hibernate3.0.5不支持,而Hibernate3.2支持,session.createSQLQuery(fsql).addScalar("singlevalue",Hibernate.DOUBLE).uniqueResult();這個(gè)到了3.2就不需要addScalar了。
4、session.createSQLQuery(sql).addEntity(Class class);Hibernate3.0.5不支持,單個(gè)參數(shù)的addEntity方法。
5、Hibernate3.2可以對(duì)原生sql 查詢使用ResultTransformer。這會(huì)返回不受Hibernate管理的實(shí)體。
- sess.createSQLQuery("SELECT NAME, BIRTHDATE FROM CATS")
- .setResultTransformer(Transformers.aliasToBean(CatDTO.class))
或:
- setResultTransformer(new AliasToBeanResultTransformer(CatDTO.class))
上面的查詢將會(huì)返回CatDTO的列表,它將被實(shí)例化并且將NAME和BIRTHDAY的值注射入對(duì)應(yīng)的屬性或者字段。但必須注意,對(duì)每一個(gè)列都必須addScalar("列名")
6、setResultTransformer與addEntity的一個(gè)區(qū)別是前者支持查任意的列,后者必須用select * from users的形式或select {a.*},{b.*} from a,b where ....。
7,Map vs. Object[]
- Since you can also use a transformer that return a Map from alias to value/entity
- (e.g. Transformers.ALIAS_TO_MAP), you are no longer required to mess with index based
- Object arrays when working with a result.
- List iter = s.createQuery(
- "select e.student.name as studentName," +
- " e.course.description as courseDescription" +
- "from Enrolment as e")
- .setResultTransformer( Transformers.ALIAS_TO_MAP )
- .iterate();
- String name = (Map)(iter.next()).get("studentName");
- Again, this works equally well for Criteria, HQL and native SQL。
【編輯推薦】
- 強(qiáng)人Hibernate文檔筆記(上)
- 強(qiáng)人Hibernate文檔筆記(中)
- 強(qiáng)人Hibernate文檔筆記(下)
- Hibernate一對(duì)多關(guān)系的處理
- Hibernate的性能優(yōu)化
文章標(biāo)題:關(guān)于Hibernate3.2的一些介紹
標(biāo)題URL:http://m.fisionsoft.com.cn/article/dhhdodi.html


咨詢
建站咨詢
