0

CRUDページを作成しています。そのページでは、サブクエリの結果に応じてテーブルからデータを選択しています。ページでネストされたクエリを使用していますが、機能していません。

クエリは次のとおりです。

from incident as i where i.sysid in(select s.SYSID from sys s, sgroups g, ugroups u 
where s.sid = g.SID and u.GId = g.GId and
 u.ID = %{#securityUtils.subject.principal.asList().get(0)}) 

ただし、ネストされたクエリ

select s.SYSID from sys s, sgroups g, ugroups u 
where s.sid = g.SID and u.GId = g.GId and
 u.ID = %{#securityUtils.subject.principal.asList().get(0)}

それが実行されれば動作しています..

4

1 に答える 1

2

クエリを別の方法で書き直すことができます。1 つの方法は、(サブクエリを使用せずに) クエリをフラット化することです。

select i from incident as i, sys s, sgroups g, ugroups u 
where i.sysid = s.SYSID and s.sid = g.SID and u.GId = g.GId and
u.ID = %{#securityUtils.subject.principal.asList().get(0)}

もう 1 つの方法は、ドット表記を使用して関係をナビゲートすることです。

from incident as i where i.fk1.fk2.fk3.ID = 
%{#securityUtils.subject.principal.asList().get(0)}

fk1/fk2/fk3 を実際の外部キー名に置き換える必要があることに注意してください (テーブルに外部キー制約がある場合)。Portofino は、外部キーの名前を持つプロパティとしてすべての関係をマップします。

私はあなたのデータベースを持っていないので、これをテストしていません。さらに情報が必要な場合は、詳細を提供してください: ログに例外スタックトレースがありますか? クエリが結果を返していませんか?

于 2013-06-06T12:38:37.497 に答える