問題タブ [ejbql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Hibernate (JPA) 熱心なクエリを実行し、すべての子オブジェクトをロードする方法
以前の質問に関連して、データにアクセスする必要がある可能性のある複数のスレッドがあるため、すべての子オブジェクトが確実に読み込まれるようにしたいと考えています (したがって、遅延読み込みの例外を回避します)。これを行う方法は、クエリ (EJB QL) で「fetch」キーワードを使用することだと理解しています。このような:
Order
のセットを持つクラスを持つモデルを想定しOrderLines
ています。
私の質問は、「個別の」キーワードが必要なようです。そうしないと、Order
for eachが返されるようですOrderLine
。私は正しいことをしていますか?
おそらくもっと重要なのは、どんなに深くても、すべての子オブジェクトを取得する方法があるかということです。約10〜15のクラスがあり、サーバーにはすべてをロードする必要があります...それは常に熱心で、特にWebフロントエンドがすべてをロードすることを意味するため、使用を避けてFetchType.EAGER
いました-しかし、おそらくそれが行く方法です-それはあなたがすること?以前にこれを試してみたところ、ウェブページが非常に遅くなったことを覚えているようですが、おそらくそれは、2 番目のレベルのキャッシュを使用する必要があるということでしょうか?
java - エンティティのコレクションを選択し、EJBQL を使用してパラメーターとして Bean に渡すにはどうすればよいですか?
JPA データ ストアから奇妙なレポートを作成しています。
オブジェクトのリストを (EJBQL を使用して) 選択する必要があります。これらのオブジェクトには、エンティティのコレクションが含まれています。私は次のように構築されたクラスを持っています:
(3 番目のパラメーターはリストであることに注意してください)
GROUP BY
そして、フェッチを使用してこれらの Bean のリストを選択したいlistParam
ので、次のように機能するクエリを書きたいと思います。
グループ化されたエンティティがリストにフェッチされ、3 番目のパラメーターに挿入されるようにします。そのようにすることは可能ですか、それとも と の異なるペアを選択する 2 つのクエリを作成する必要がparam1
ありparam2
ますか? それぞれ適切なパラメータ値を持つすべてのエンティティを取得しますか?
java - JPQLでnvl(max(c.EmployeeId),0)を選択?
私は oracle10g データベースと eclipselink を使用しています。テーブルから最後に挿入されたキーを取得する必要があるため、このクエリを作成しました
しかし、テーブルが空の場合 (空になる場合もあります)、ILEGAL ARGUMENT EXCEPTION が発生します。原因: JPQL 例外、詳細:「EntityManager でクエリを作成中に例外が発生しました」。私が間違っているのは何ですか?
java - SEAM ENTITYQUERY - 制限に関する問題 seam-gem の例
私のプロジェクトはもともと seam-gen によって生成されたもので、アクション "List" Bean が期待どおりに機能しません。制限配列にはテーブルのすべての属性があり、すべてのパラメーターが必須であるかのように動作しています。以下のリストを参照してください。
たとえば、「Placa Unica」というフィールドをフォームに入力すると、すべてのフィールドを含む sql が次のように生成されます。
入力されていない (null) フィールドをクエリに入れたくありません。「動的制限」またはEntityQueryでそれを行う別の方法に関する例は見つかりませんでした
data-structures - HQLまたはEJB QLを保持するデータ構造
その場でレポートを取得するために、かなり複雑な動的クエリ ビルダーを作成する必要があります。どのような種類のデータ構造が最適かについて、少し頭を悩ませています。
selectParts のリスト、fromParts のリスト、where 基準のリスト、order by、group by などを永続化のために保持するだけです。結合、特に外部結合、節を持つこと、および集約関数について考え始めると、少し曖昧になり始めます。
今のところ、最初にインターフェイスを構築し、できる限り先のことを考えようとしていますが、構造に制限があることが判明した場合は、一連のリファクタリングを行うことは間違いありません.
この質問をここに投稿しているのは、誰かが私たちが基にできる何かをすでに考え出していることを願っています. または、いくつかのライブラリなどを知っています。来週の実装に飛び込む前に、潜在的な問題についていくつかのヒントやヘッドアップを入手できれば幸いです.
regex - 正規表現を使用してJPA/EJB QLステートメントをテストすることは可能ですか?
私は正規表現の専門家ではないので、この質問を捨てると思いました。正規表現は、テストをより堅牢にするのに役立つと思います(生成されたEJB QLステートメントをテストして正しく生成する)。
例えば:
select u.firstName, u.lastName from Users u where u.age > 50
次のように分割するためにどの正規表現を使用しますか?
- "u.firstName、u.lastName"
- 「ユーザーu」
- 「u.age>50」
キーワードの大文字と小文字に関係なく(つまり、SELECT、Select、select、...)、キーワードの前後の可能なスペースに関係なく?もちろん、さらに分割したほうがいいのですが、上記のようにパーツを分割できれば、テストを改善できます。
ポインタとヘルプを事前に感謝します。
java - Java / EJB 2.xを使用したOracleでの日付(1916年5月1日)によるレコードのクエリ
Oracleテーブルの「生年月日」列を照会するEJB2.1エンティティBeanがあります。データベースの列のタイプはDATEです。クエリは、1つの特定の日付(1916年5月1日)を除いて問題なく機能します。
これは夏時間と関係があります。Oracleは、日付を5/1/1916 1:00:00 AMとして格納しますが、他のすべての日付の時刻は12:00:00 AMに設定されます(例:1/7/1971 12:00:00 AM)。
本番/受け入れシステムでは、1916年5月1日のクエリ(EJB-QL!を使用)は結果を返しません。奇妙なことに、それは私の開発/テストシステムで機能します。さまざまなシステムのデータベース設定を確認したところ、DBTIMEZONEパラメーターが開発/テストボックスで+00:00に設定され、本番/受け入れボックスで+02:00に設定されていることがわかりました。ただし、タイムゾーンを+02:00に変更しても違いはありません。
この動作の原因は何ですか?この生年月日を検索するにはどうすればよいですか?
java - オブジェクト内の EJB-QL クエリ リスト
私は単純な (願わくば) EJB-QL クエリであるべきものを書こうとしています。
ここに私のオブジェクトがあります:
最小定員の部屋を検索するにはどうすればよいですか? 部屋は複数の構成を持つことができ、それらの構成ごとに異なる容量があります。
java - データベースの列にマップされていない関数によって EJBQL で注文できますか?
クラスのプロパティを使用する関数でクエリを注文したいと考えています。何かのようなもの:
そして、次のような文: select n from A order by name.StringLength()
. 出来ますか?
hibernate - 多対1の関係の4つのレベルをトラバースするejbqlクエリの正しい構文は何ですか
JPA(hibernate)には、次のような多対1および1対1の関係で構成される単純なデータモデルがあります。
町->州->知事->国->大陸
町は多対1で州、州は1対1で知事、知事は多対1で国、国は多対1で大陸です。
一意のIDで単一の町のインスタンスを取得し、ejbqlを使用して関連する州、知事、国、大陸を熱心に取得したいと思います。適切なejbqlは次のとおりです。
Hiberanteはこのejbqlから正しいSQLを生成しますが、myTown.getState()。getGovernor()を実行すると。ガバナーのnullオブジェクトを返します。なぜ休止状態がガバナーに影響を与えないのですか?ツリーの1レベル以上上にオブジェクトを配置したくないようです。誰かが私が間違っているのを見ますか?