<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    MDA/MDD/TDD/DDD/DDDDDDD
    posts - 536, comments - 111, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    升級到hibernate3.2

    Posted on 2007-10-09 02:03 leekiang 閱讀(996) 評論(0)  編輯  收藏 所屬分類: hibernate

    1,從Hibernate 3.0.x/3.1.x升級到最新的3.2版,一定要注意,3.2版的很多sql函數如count(), sum()的唯一返回值已經從Integer變為Long,如果不升級代碼,會得到一個ClassCastException。

    這個變化主要是為了兼容JPA,可以在hibernate.org的最新文檔中找到說明。

    Hibernate Team也提供了一個與原來兼容的解決方案:

    ? 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();?這樣就可以兩個版本同時兼容.

    2,hibernate3.2要求ehcache1.2

    3,session.createSQLQuery(sql).executeUpdate();這個hibernate3.0.5不支持,而hibernate3.2支持

    ? session.createSQLQuery(fsql).addScalar("singlevalue",
    ??? ??? ??? ??? ??? ??? Hibernate.DOUBLE).uniqueResult();這個到了3.2就不需要addScalar了.

    4,session.createSQLQuery(sql).addEntity(Class class);hibernate3.0.5不支持,單個參數的addEntity方法

    5,hibernate3.2可以對原生sql 查詢使用ResultTransformer。這會返回不受Hibernate管理的實體。
    sess.createSQLQuery("SELECT NAME, BIRTHDATE FROM CATS")
    ??????? .setResultTransformer(Transformers.aliasToBean(CatDTO.class))

    或setResultTransformer(new AliasToBeanResultTransformer(CatDTO.class))
    上面的查詢將會返回CatDTO的列表,它將被實例化并且將NAME和BIRTHDAY的值注射入對應的屬性或者字段。
    http://bbs.xml.org.cn/blog/more.asp?name=lhwork&id=15351

    但必須注意,對每一個列都必須addScalar("列名")

    6,setResultTransformer與addEntity的一個區別是前者支持查任意的列,后者必須用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.

    ?

    主站蜘蛛池模板: 亚洲黄色网址在线观看| 99久久精品国产免费| 99久久免费精品高清特色大片| 亚洲国产高清人在线| av片在线观看永久免费| 成人免费无码视频在线网站| 无码乱人伦一区二区亚洲| 精品无码国产污污污免费网站国产 | 亚洲精品中文字幕无码蜜桃| 国产精品亚洲五月天高清| 蜜桃视频在线观看免费网址入口| 国产午夜亚洲精品不卡| 亚洲国产高清在线| 国产精品冒白浆免费视频| 激情亚洲一区国产精品| 99在线免费观看视频| 亚洲av无码专区首页| 日韩精品成人亚洲专区| 亚洲成AV人片在WWW| 成年性生交大片免费看| 久久精品国产亚洲av麻豆图片 | 免费电影在线观看网站| 美女网站在线观看视频免费的 | 84pao国产成视频免费播放| 亚洲综合一区二区精品久久| 曰批全过程免费视频网址| 亚洲不卡在线观看| 亚洲欧洲成人精品香蕉网| 中国国产高清免费av片| 亚洲欧洲∨国产一区二区三区| 香蕉高清免费永久在线视频 | 岛国精品一区免费视频在线观看| 亚洲人成激情在线播放| 国产又粗又长又硬免费视频| 免费无码一区二区三区| 国产精品免费大片一区二区| 亚洲欧美日韩中文字幕一区二区三区 | 国产线视频精品免费观看视频| 亚洲人成人网站18禁| 亚洲国产精品乱码在线观看97| 午夜精品在线免费观看|