2011-07-21 56 views
0

我有一個引用其他表的表。存儲的是表名和實體ID。如何使用HSQLDB和Hibernate動態選擇表?

像這樣:

  ref_table 

    id | table_name | refId 
-------+------------+------- 
    1 | test  | 6 
    2 | test  | 9 
    3 | other | 5 

現在我試圖制定一個SQL /函數,返回從正確的表中正確的實體。例如:

SELECT * FROM resolveId(3) 

我希望從表「其他」中得到ID爲「5」的實體。這可能嗎?我想我可以用存儲過程(CREATE FUNCTION)來完成。該函數將不得不檢查「ref_table」並返回在SQL語句中使用的表的名稱......但具體到底是什麼?

回答

1

如果你想使用resuling實體的SELECT語句或連接,你應該使用創建RETURNS TABLE(..)

有一個在HSQLDB程序不允許其動態創建一個SQL限制功能。因此,CREATE FUNCTION的主體可以包含一個CASE或IF ELSE塊,該塊根據輸入值(1,2,3,...)切換到預定義的SELECT語句。

CREATE FUNCTION的細節記錄在這裏: http://hsqldb.org/doc/2.0/guide/sqlroutines-chapt.html#N12CC4 有與退貨表中的SQL函數的一個例子。

+0

謝謝......包括CASE做到了! – Arne