2011-07-11 17 views
1

私は3つのエンティティを持っていると想像してください。Basic < - Sub < - SubSub私はすでにJPA 2.0で、私はこのクエリ SELECT b FROM Basic b WHERE TYPE(b) IN (Basic,Sub) を持つことができることを発見した。しかし、私はと仕事をしなければならない実装がのapache-のOpenJPA-1.2.3-SNAPSHOTBasicSubではなくSubSubJPA 1.0で非多態性のJPQLクエリを実行するにはどうすればよいですか?

を選択します。

JPA 1.0でタスクを実行するにはどうすればよいですか?私は何でもオープンです。 Discriminator Column(プレーンSQLまたはJPQL)をクエリできますか? queryHintのようなものがありますか?継承を使用せず、何らかの構成を使用することで解決できますか?

ご協力いただきありがとうございます。 THX

+0

JPA1.2が存在しません。おそらく、JPA1.0 – DataNucleus

+0

8 [あなたが正しいでしょう。私は恥ずかしいです* – unR

答えて

2

私がテストしていないが、私はあなたがこれに似た何かが必​​要だと思う:

SELECT b FROM Basic b WHERE b NOT IN (FROM SubSub) 
+0

これは非常にgoogのアイデアです:) 私はそれがこのようになると思います。 'SELECT b FROM Basic b WHERE b NOT IN(サブサブからのSELECT) ' が間違っていますか? まだ解決策のようですが、いいですね:) – unR

+0

はい、JPAでは「SELECT」部分はこの場合はオプションです。とにかく、あなたの質問もうまくいくはずです。しかし、私は回避策としてこれを見ていない、私はこれを行う適切な方法としてこれを参照してください。実際、私はJPA 2.0以上のものが好きです。あなたが貼り付けた別のもの(サブサブではない基本が本当に欲しいから、クエリはロジックです)。それがうまくいけば、答えを受け入れるように躊躇しないでください:) – edutesoy

+0

私はためらっていません、ありがとうございます。 私はあなたが 'Basic'sと' 'SubSub'は中間のものを残していますか?しかし、誰が気にします。私がとにかく必要なものではない。私は 'SingeTableInheritance'を使用しているので' SELECT b FROM Basic b WHERE b.id NOT IN(SELECT s.id FROM SubSub s) 'はパフォーマンスを改善しますか? とにかく、再びthx。 – unR

関連する問題