2016年1月1日 星期五

使用HQL工具(Hibernate3.x 三十三)

必須先安裝Hibernate tools,沒有的先參考在Eclipse增加Hibernate tools這篇文章


※使用方式


1.選Hibernate的圖示,如果沒有,Window-->Open Perspective-->Other-->Hibernate
2.選Hibernate Configurations的設定,像我有兩個,一按就會出現3的畫面
3.Type主要有3個,Annotations、Core、JPA
4.目前針測到可以和資料庫對應的Class,下面還有Session Factory、Database,都要能順利打開,才能操作HQL
5.按下去才會出現6~8的畫面,旁邊的按鈕是操作Criteria的
6.選和2相同的設定
7.下HQL語法,最好是用package.class,我的package叫vo,所以我vo打完一「.」,會有提示,不打也可以,但沒有提示,或者不同的package有相同的class,它就不知道是哪一個了
8.下好HQL,按下這個按鈕可以執行
9.按下8的按鈕的結果會出現在這裡
10.這一排是曾經打過的HQL指令

※9的活頁標籤旁邊還有一個叫Hibernate Dynamic SQL Preview,這是Hibernate執行的SQL語法
※可以用註解,HQL editor 是「--」
但Criteria editor是用「//」和「/* ...  */」和「/** … */」,也就是和java 一樣

※變數的使用


右上角的Query Parameters 一樣是在Window-->Show View的Hibernate裡面,按下那個「:P」可以新增變數,但注意Value可以直接打,但執行時是抓不到的,一定要點旁邊的「…」,然後按畫面操作才抓的到,不然永遠都是一筆都沒有



※解決錯誤

1.一定要連網路才行,不曉得是不是我用maven的關係,不連網路時,我點第一張圖,2旁邊的三角形時,會出現錯誤訊息,如下:
或者



2.Schema一定要打,而且要大寫,還有方言如下:
按下第一張圖的4號圖下面的Database旁邊的三角形,出現「reading schema error getting database metadata」時,解決方法是在Default Schema打大寫,打完可切換回Source確認一下

Dialect:
HQL我下left可以順利執行,但right會出「join type not supported by OracleJoinFragment(use Oracle9i/Oracle10gDialect)」的錯,如下:




因為我用的是Oracle,下拉選單有9i,還有10g,待會會出錯,我試過9才是OK的,沒有「i」哦

3.雖然改成9了,還沒有完全解決,如下是OK的:
和2一樣的語法給HQL執行沒問題了,但Dialect選其他的還是不行
可是使用HQL工具還是一樣的錯,只能說這個工具有bug吧


3.改完設定檔以後,選第一張圖的2號或子下拉選項,按右鍵refresh,不見得有用,不行就重啟Eclipse吧


4.密碼過期,或名稱有「-」號 (「_」可以) 也會出錯,最好試試Oracle可以順利打開再設定



※總結

如果Hibernate tools不出錯就用,出錯了才使用java撰寫測試

沒有留言:

張貼留言