Java學習

          java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已經搬家了,新的地址是 http://www.javaly.cn 如果有對文章有任何疑問或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂園)指出,我會盡力幫助解決。一起進步

           

          HQL語句的語法

          1.from子句
          from Person
          表明從Person持久化類中選出全部的實例。
          推薦:from Person as p

          2.select子句
          select p.name from Person as p
          select p.name.firstName from Person as p
          select new list(p.name, p.address) from Person as p
          select new ClassTest(p.name, p.address) from Person as p (有前提)
          select p.name as personName from Person as p
          select new map(p.name as personName) from Person as p (與new map()結合更普遍)

          3.聚集函數
          avg,count,max,min,sum
          select count(*) from Person
          select max(p.age) from Person as p
          select p.name || "" || p.address from Person as p

          4.多態查詢
          from Person as p
          from java.lang.Object o
          from Named as n

          5.where子句
          from Person where name like "tom%"
          from Person as p where p.name like "tom%"
          from Cat cat where cat.mate.name like "kit%"
          select * from cat_table as table1 cat_table as table2 where table1.mate =
          table2.id and table1.name like "kit%"
          from Foo foo where foo.bar.baz.customer.address.city like "fuzhou%"
          from Cat cat, Cat rival where cat.mate = rival.mate
          select cat, mate
          from Cat cat, Cat mate
          where cat.mate = mate
          from Cat as cat where cat.id = 123
          from Cat as cat where cat.mate.id = 69
          from Person as person
          where person.id.country = 'AU'
          and person.id.medicareNumber = 123456
          from Account as account
          where account.owner.id.country = 'AU'
          and account.owner.id.medicareNumber = 123456
          from Cat cat where cat.class = DomesticCat
          from Account as a where a.person.name.firstName like "dd%" // 正確
          from Account as a where a.person.name like "dd%" // 錯誤

          6.表達式
          from DomesticCat cat where cat.name between 'A' and 'B'
          from DomesticCat cat where cat.name in ('Foo', 'Bar', 'Baz')
          from DomesticCat cat where cat.name not between 'A' and 'B'
          from DomesticCat cat where cat.name not in ('Foo', 'Bar', 'Baz')
          from DomesticCat cat where cat.name is null
          from Person as p where p.address is not null
          true 1, false 0
          from Cat cat where cat.alive = true
          from Cat cat where cat.kittens.size > 0
          from Cat cat where size(cat.kittens) > 0
          from Calendar cal where maxelement(cal.holidays) > current date
          from Order order where maxindex(order.items) > 100
          from Order order where minelement(order.items) > 10000
          //操作集合元素
          select mother from Cat as mother, Cat as kit
          where kit in elements(foo.kittens)
          //p的name屬性等于集合中某個元素的name屬性
          select p from NameList list, Person p
          where p.name = some elements(list.names)
          //操作集合元素
          from Cat cat where exists elements(cat.kittens)
          from Player p where 3 > all elements(p.scores)
          from Show show where 'fizard' in indices(show.acts)
          //items是有序集合屬性,items[0]代表第一個元素
          from Order order where order.items[0].id = 1234
          //holidays是map集合屬性,holidays[national day]是代表其中第一個元素
          select person from Person person, Calendar calendar
          where calendar.holidays['national day'] = person.birthDay
          and person.nationality.calendar = calendar
          //下面同時使用list集合和map集合屬性
          select item from Item item, Order order
          where order.items[order.deliveredItemIndices[0]] = item and order.id = 11
          select item from Item item, Order order
          where order.items[maxindex(order.items)] = item and order.id = 11

          select item from Item item, Order order
          where order.items[size(order.items) - 1] = item

          select cust
          from Product prod,
          Store store
          inner join store.customers cust
          where prod.name = 'widget'
          and store.location.name in ['Melbourne', 'Sydney']
          and prod = all elements(cust.currentOrder.lineItems)

          SELECT cust.name, cust.address, cust.phone, cust.id, cust.current_order
          FROM customers cust,
          stores store,
          locations loc,
          store_customers sc,
          product prod
          WHERE prod.name = 'widget'
          AND store.loc_id = loc.id
          AND loc.name IN ('Melbourne', 'Sydney')
          AND sc.store_id = store.id
          AND sc.cust_id = cust.id
          AND prod.id = ALL(
          SELECT item.prod_id
          FROM line_items item, orders o
          WHERE item.order_id = o.id
          AND cust.current_order = o.id
          )

          7.order by子句
          from Person as p
          order by p.name, p.age
          from Person as p
          order by p.name asc, p.age desc

          8.group by子句
          select cat.color, sum(cat.weight), count(cat)
          from Cat cat
          group by cat.color
          //select后出現的id處出現在group by之后,而name屬性則出現在聚集函數中
          select foo.id, avg(name), max(name)
          from Foo foo join foo.names name
          group by foo.id

          select cat.color, sum(cat.weight), count(cat)
          from Cat cat
          group by cat.color
          having cat.color in (eg.Color.TABBY, eg.Color.BLACK)

          select cat
          from Cat cat
          join cat.kittens kitten
          group by cat
          having avg(kitten.weight) > 100
          order by count(kitten) asc, sum(kitten.weight) desc

          9.子查詢
          from Cat as fatcat
          where fatcat.weight > (select avg(cat.weight) from DomesticCat cat)

          from Cat as cat
          where not (cat.name, cat.color) in (
          select cat.name, cat.color from DomesticCat cat
          )

          10.fetch關鍵字
          from Person as p join p.scores

          from Document fetch all properties order by name
          from Document doc fetch all properties where lower(doc.name) like '%cat%'

           11.執行hql
                    String hql ="update ContentReply contentReply set active = false where contentReply.id =:replyId";
                  getSession().createQuery(hql).setString("replyId", replyId).executeUpdate();


          posted on 2008-10-20 15:39 找個美女做老婆 閱讀(991) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          公告

          本blog已經搬到新家了, 新家:www.javaly.cn
           http://www.javaly.cn

          常用鏈接

          留言簿(6)

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 丹棱县| 建昌县| 静海县| 永川市| 将乐县| 禄丰县| 镇宁| 德惠市| 普宁市| 娱乐| 大城县| 扶绥县| 三河市| 芦溪县| 夏津县| 萝北县| 崇阳县| 云安县| 新野县| 嵊州市| 乌鲁木齐市| 江阴市| 闵行区| 额尔古纳市| 四子王旗| 岳阳市| 获嘉县| 三亚市| 蒙山县| 于都县| 台安县| 延川县| 百色市| 柯坪县| 瑞金市| 宜丰县| 临武县| 廉江市| 南郑县| 西安市| 山丹县|