我正在從用戶處獲取「關鍵字」和表名。 現在,我想查找其數據類型爲varchar(String)的表的所有列。 然後我將創建一個查詢來將關鍵字與那些列進行比較,匹配的行將作爲結果集返回。我試過desc table_name
查詢,但它沒有工作。我們可以在JPQL中編寫描述表查詢嗎?
我們可以在JPQL中編寫描述表查詢嗎? 如果沒有,那麼有沒有其他方法可以解決上述情況? 請幫助,並提前謝謝。
我正在從用戶處獲取「關鍵字」和表名。 現在,我想查找其數據類型爲varchar(String)的表的所有列。 然後我將創建一個查詢來將關鍵字與那些列進行比較,匹配的行將作爲結果集返回。我試過desc table_name
查詢,但它沒有工作。我們可以在JPQL中編寫描述表查詢嗎?
我們可以在JPQL中編寫描述表查詢嗎? 如果沒有,那麼有沒有其他方法可以解決上述情況? 請幫助,並提前謝謝。
沒有解決方法是必要的,因爲它不是技術的缺點。這不是JPQL需要改變,這是您選擇的技術。在JPQL中,您甚至不能從選擇數據。您可以從類中進行選擇,並且可以一次將它們映射到多個表,從而實現最簡單查詢的SQL連接。描述這樣的連接將毫無意義。即使您可以描述表格,您也不會使用JPQL中的列名稱,而是使用對象的屬性。在JPQL中描述表是沒有意義的。
JPQL是用於查詢對象而不是表格。此外,它指的是靜態工作(類只映射到一次關係),而不是動態的事情,比如將表映射到對象或實時檢查數據庫(這是ror的AR的用途)。屬性的動態發現不是其中的一部分。
取決於你真正想實現(我們只知道你正在嘗試做的,這是不同的),你有兩個基本的選擇:
,如果你試圖寫一個軟件中一種動態的方式,以便它可以根據模式中的更改進行調整 - 刪除JPQL(或任何其他ORM)。 Java類意味着是靜態的,你不能真正將它們映射到動態表(或增加新的屬性)。使用行集,它們工作正常,他們會讓你使用SQL;
如果您正在構建一個可以被許多項目共享的智能庫,並且必須使用許多不同的靜態映射,請使用反射API來查找您查詢的對象的屬性。無論如何,表中列的名稱將無濟於事,因爲在JPQL查詢中,您必須使用映射中定義的名稱。
根據我的說法,我們不能在jpql中使用describe查詢。
映射數據庫字典表並從中讀取所需的數據。對於Oracle數據庫,您需要從以下三個表中進行選擇:user_tab_comments,user_tab_cols,user_col_comments;以實現描述語句的全部功能。
有超過社會上一些談到了持久單元的動態清晰度在JPA的未來版本:http://www.oracle.com/goto/newsletters/javadev/0111/blogs_sun_devoxx.html?msgid=3-3156674507
如果是這樣,那麼任何其他解決辦法? – Sagar 2011-01-28 09:43:27