<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 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    hibernate雜記

    Posted on 2008-02-16 05:04 leekiang 閱讀(771) 評論(0)  編輯  收藏 所屬分類: hibernate
    1,hibernate在進行復雜查詢的情況下一樣可以直接得到一個Map的list:
    select new Map(a.id as id,a.name as name,b.type as type) from A a,B b where
    a.id=b.aId;
    ...
    List mapList=query.list();
    ....

    在jsp頁面可以和使用普通的JavaBean一樣的方式輸出
    <c:forEach items="${mapList}" var="m">
    <tr> <td>
    <c:out value="${m.id}"/> </td> <td>
    <c:out value="${m.name}"/> </td>
    <td> <c:out value="${m.type}"/> </td> </tr>
    </c:forEach>
    這樣的處理也是很簡潔的

    select new MyObj(id,name,deptid,deptName) from tb_usr,tb_dept where .....
    這種方式要求MyObj類有對應的構造方法

    2.HQL supports subqueries in the where clause. We can’t think of many good uses
    for subqueries in the from clause, although select clause subqueries might be a
    nice future extension.
    不支持from后的子查詢,支持where子查詢
    http://blog.zol.com.cn/655/article_654256.html

    3, String sql="select {fi.*} from FuncInfo fi " +
    ?? "left join RoleSubFunc rsf on fi.FuncId=rsf.FuncId "+
    ?????? "left join RoleInfo ri on rsf.RoleId=ri.RoleId "+
    ?????? "left join UserRole ur on ri.RoleId=ur.RoleId "+
    ?????? "where ur.UserId='"+userId+"'";//可以無限向上找父級
    ?List list =session.createSQLQuery(sql).addEntity("fi", FuncInfo.class).list();

    4,為什么Hibernate 3中的HQL無法查詢漢字
    使用同樣的代碼和配置文件,在Hibernate 2上完全沒有問題,在Hibernate 3中,使用如下HQL查詢,無法得到正確的結果集:
    String hql = "from story where title like '%漢字%'";
    Query q = session.createQuery(hql);
    但用下面的HQL查詢,卻可以得到正確結果集:
    String hql = " from story where title like '%english%'";
    Query q = session.createQuery(hql);
    答:如果采用的是拼接HQL的方式,從Hibernate 2升級到Hibernate 3確實會出現漢字亂碼問題。在控制臺中可以看到,SQL的漢字部分變成了亂碼:
    [DEBUG] 2005-08-14 14:33:58 org.hibernate.SQL - "select story0_.content from story as story0_ where story0_.title like '%&–°é—&&?¨&€?'
    在Hibernate中,查詢時應盡量使用占位符的寫法(如下),這樣既可以避免亂碼問題,又可以避免潛在的SQL注入攻擊:
    getHibernate().find("from story where title like ? ", "%漢字%")
    注:用"update TbTest set name='張三' "也會有類似的問題,要改為占位符的寫法
    http://xqfy1983.blog.sohu.com/61054398.html

    5,使用Hibernate.DATE時,得到的時間不帶分秒。
    ? 可以考慮使用Hibernate.CALENDAR,實際類型是java.util.GregorianCalendar,然后再getTime()
    6,
    報表查詢? select new Table(t1.a,t2.b ...)? from .....
    ? select new Object(vo.id,vo.name) from VO vo
    ? 這種寫法需事先寫好構造方法
    7,List cats = sess.createSQLQuery("select {cat.*} from cats cat")
    ? ? ? ? .addEntity("cat", Cat.class);
    ? ? ? ? .setMaxResults(50);
    ? ? ? ? .list();
    8,貌似hibernate添加或修改對象,如果字符串類型的屬性的值為空字符串(大小為0),則自動當null處理
    9,如果在hbm中某屬性設為not null,然后如果po中的該屬性為null,則hibernate會拋異常
    ? 但如果在hbm中設置屬性的長度,而實際的長度超過了,hibernate不會拋異常
    10,如果要使生成得sql不是每次都包括所有的列,可配置參數實現:
    <class name="onlyfun.caterpillar.User" table="T_USER"
    dynamic-insert="true"
    dynamic-update="true">
    來源:http://caterpillar.onlyfun.net/Gossip/HibernateGossip/DynamicSQL.html
    但并不是設置了dynamic-update=true就會有效果,要生效是有條件的.
    (1)同一session內,對已經persisit的對象進行update。
    但有一奇怪現象,例如memo字段原來為空,o.setMemo(null),生成的update的sql還是會有set memo=null的語句,不知道為什么
    (2)不同session之間,update傳入的對象是另一個session中的persist對象,然后merge
    http://qbar.qq.com/u2011541/19.htm
    http://xuliangyong.javaeye.com/blog/74696
    11,
    http://yuonch.javaeye.com/blog/89859
    http://yuonch.javaeye.com/blog/90727

    12,

    session.createQuery("delete from Company where id=1").executeUpdate();
    這種寫法必須配置org.hibernate.hql.ast.ASTQueryTranslatorFactory,否則會報

    HibernateQueryException: query must begin with SELECT or FROM
    http://czg185960.spaces.live.com/blog/cns!32A09070624FB42C!208.entry
    主站蜘蛛池模板: 亚洲国产成人精品电影| 免费黄色毛片视频| 亚洲区小说区图片区QVOD| 麻豆国产精品入口免费观看| 免费A级毛片无码A| 精品国产亚洲第一区二区三区| 曰韩无码AV片免费播放不卡| 四虎影视在线影院在线观看免费视频| 亚洲中文字幕久久精品无码APP | 国产高清免费的视频| 亚洲人成亚洲人成在线观看| 久久综合亚洲色一区二区三区| 日韩亚洲国产高清免费视频| 久久久精品视频免费观看| 在线v片免费观看视频| 国产亚洲精品无码专区| 成人亚洲国产va天堂| 国产一精品一AV一免费| 免费一级毛片不卡不收费| 久久精品国产亚洲精品2020| 一级成人a做片免费| 啦啦啦www免费视频| 久久久亚洲欧洲日产国码二区| 一级毛片a免费播放王色电影 | 亚洲激情校园春色| 丁香花免费完整高清观看| 亚洲?V乱码久久精品蜜桃| 久久久久精品国产亚洲AV无码| 亚洲色无码国产精品网站可下载 | 亚洲AV无码一区二区二三区入口| 在线视频亚洲一区| 国产av无码专区亚洲av果冻传媒| 精品国产_亚洲人成在线| 免费阿v网站在线观看g| 精品亚洲成a人片在线观看| 国产免费MV大全视频网站| 成人免费视频国产| 成人影片一区免费观看| 伊人久久亚洲综合| 免费做爰猛烈吃奶摸视频在线观看| 亚洲欧洲自拍拍偷综合|