2011-01-28 81 views
0

我正在從用戶處獲取「關鍵字」和表名。 現在,我想查找其數據類型爲varchar(String)的表的所有列。 然後我將創建一個查詢來將關鍵字與那些列進行比較,匹配的行將作爲結果集返回。我試過desc table_name查詢,但它沒有工作。我們可以在JPQL中編寫描述表查詢嗎?

我們可以在JPQL中編寫描述表查詢嗎? 如果沒有,那麼有沒有其他方法可以解決上述情況? 請幫助,並提前謝謝。

回答

4

沒有解決方法是必要的,因爲它不是技術的缺點。這不是JPQL需要改變,這是您選擇的技術。在JPQL中,您甚至不能從選擇數據。您可以從類中進行選擇,並且可以一次將它們映射到多個表,從而實現最簡單查詢的SQL連接。描述這樣的連接將毫無意義。即使您可以描述表格,您也不會使用JPQL中的列名稱,而是使用對象的屬性。在JPQL中描述表是沒有意義的。

JPQL是用於查詢對象而不是表格。此外,它指的是靜態工作(類只映射到一次關係),而不是動態的事情,比如將表映射到對象或實時檢查數據庫(這是ror的AR的用途)。屬性的動態發現不是其中的一部分。

取決於你真正想實現(我們只知道你正在嘗試做的,這是不同的),你有兩個基本的選擇:

  • ,如果你試圖寫一個軟件中一種動態的方式,以便它可以根據模式中的更改進行調整 - 刪除JPQL(或任何其他ORM)。 Java類意味着是靜態的,你不能真正將它們映射到動態表(或增加新的屬性)。使用行集,它們工作正常,他們會讓你使用SQL;

  • 如果您正在構建一個可以被許多項目共享的智能庫,並且必須使用許多不同的靜態映射,請使用反射API來查找您查詢的對象的屬性。無論如何,表中列的名稱將無濟於事,因爲在JPQL查詢中,您必須使用映射中定義的名稱。

0

根據我的說法,我們不能在jpql中使用describe查詢。

+0

如果是這樣,那麼任何其他解決辦法? – Sagar 2011-01-28 09:43:27

相關問題