<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 閱讀(778) 評論(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
    主站蜘蛛池模板: 亚洲最大免费视频网| 亚洲av午夜成人片精品网站| 亚洲一区二区三区亚瑟| 无码成A毛片免费| 亚洲综合国产精品| 亚洲免费闲人蜜桃| 亚洲国产美女精品久久| 成年女人毛片免费观看97| 亚洲AV无码无限在线观看不卡| 亚洲一区二区三区免费在线观看 | 免费高清小黄站在线观看| 亚洲乱码卡三乱码新区| 99精品全国免费观看视频 | 一级毛片a女人刺激视频免费| 国产啪亚洲国产精品无码| 国产精品免费αv视频| 无码久久精品国产亚洲Av影片| 四虎在线视频免费观看视频| 亚洲欧洲日韩国产一区二区三区| 好爽…又高潮了免费毛片| 牛牛在线精品免费视频观看| 亚洲午夜福利精品久久| 毛片免费在线观看| 99热亚洲色精品国产88| 全部免费毛片免费播放| 韩国免费a级作爱片无码| 精品亚洲成a人片在线观看 | 午夜亚洲国产成人不卡在线| 国产精品福利在线观看免费不卡| 99久久精品国产亚洲| 日本无吗免费一二区| 国产成人无码区免费网站| 亚洲国产成人精品无码区在线秒播| 成年人免费视频观看| 国产黄片不卡免费| 亚洲欧洲另类春色校园小说| 免费观看国产小粉嫩喷水| 久久精品成人免费观看| 亚洲avav天堂av在线网毛片| 国产亚洲综合色就色| 国产成人免费a在线视频色戒|