2011-07-21 17 views
0

私は他のテーブルへの参照を持つテーブルを持っています。 Storedはテーブル名とエンティティIDです。HSQLDBとHibernateでテーブルを動的に選択する方法は?

このよう

:私は正しいテーブルから正しいエンティティを返すSQL/FUNCTIONを策定しようとする今、

  ref_table 

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

。私は「他」のテーブルからIDと「5」の実体を得ることを期待する

SELECT * FROM resolveId(3) 

:ような何か。これは可能ですか?私はストアドプロシージャ(CREATE FUNCTION)でそれを実行できると思います。この関数は "ref_table"を検査して、SQL文で使用するテーブルの名前を返す必要がありますが、正確にはどのようにしますか?

答えて

1

あなたはselect文でresulingエンティティを使用する場合、または参加した場合、あなたはRETURNS TABLEでCREATE FUNCTIONを使用する必要がありますが(..)

動的SQLを作成する許可しないHSQLDBルーチンには限界があります。したがって、CREATE FUNCTION本体には、入力値(1,2,3、..)に基づいて事前定義されたSELECTステートメントに切り替えるCASEまたはIF ELSEブロックが含まれている場合があります。

ここには、CREATE FUNCTIONの詳細が記載されています。 http://hsqldb.org/doc/2.0/guide/sqlroutines-chapt.html#N12CC4 RETURNS TABLEを使用したSQL関数の例があります。

+0

ありがとうございました...ケースを含むトリックでした! – Arne

関連する問題