問題タブ [querydsl]
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.
spring-data - QueryDSL-FROMステートメントにサブクエリを追加します
次のようなSQLクエリを実装する必要があります。
QueryDSLでそのようなステートメントを書くにはどうすればよいですか(JPAとJDOを使用していません-クリーンなSQLのみ)?
querydsl - QueryDSL での日付演算
次の (Oracle) クエリを QueryDSL で表現したいと思います。
つまり、日付演算を実行したいのです。残念ながら、com.mysema.query.types.path.DateTimePath
(によって返されるQEntity.entity.created
) a には加算/減算のメソッドが含まれておらず、比較のためだけに含まれています(before
or などgt
)。
見つけましcom.mysema.query.types.Ops.DateTimeOps
たが、私を助けるものは何もありません。
何か不足していますか、それとも QueryDSL が日付演算をサポートしていないだけですか?
jakarta-ee - slf4j-api の競合
querydsl (sl4j-api 1.6 に依存) と arquillian-persistence-api (slf4j-jdk14 1.5.6 に依存) を使用しています。Maven で古いバージョン 1.5.6 を無視すると、JBoss で次のメッセージが表示されます
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
テスト用にマネージド JBoss AS 7.1 で arquillian を使用しています (Maven は maven central からバージョンをダウンロードし、テストを実行します)。また、arquillian 永続化 API を使用しています。
与えられた警告を修正するにはどうすればよいですか? どちらの依存関係を保持する必要があるか、または両方を適切に機能させるにはどうすればよいですか?
これが、arquillian 永続化 API の失敗に関するエラー メッセージが表示されない理由だと思います (ロガーが機能していないためですか?)。
spring-security - Spring Data JPA および spring-security: データベース レベルでのフィルター (特にページング用)
注釈とスプリング セキュリティを使用して、オープン ソース プロジェクトにメソッド レベルのセキュリティを追加しようとしています。私が今直面している問題は、findAll メソッド、特にページング用のものです (例: ページを返す)。
@PostFilter を使用すると、リストで機能します (ただし、データベースではなくアプリケーションでフィルター処理することはお勧めできません) が、ページング クエリでは完全に失敗します。
を含むエンティティがあるため、これは問題ですList<Compound>
。コンパウンドにはさまざまな実装があり、ユーザーはコンパウンドの 1 つを読み取る権限しか持たない場合があります。複合はTABLE_PER_CLASS
継承を使用します。リポジトリは実装しQueryDslPredicateExecutor
ます。
私の考えは、現在のユーザーに基づいて返される結果を制限する述語を各クエリに追加することです。ただし、a)ユーザーとロールのデータモデルがどのように見えるか、およびb)述語を作成する方法については、ちょっと迷っています(モデルが定義されれば、これはおそらく簡単です)。または、querydsl は既に型ベースのフィルタリング (クエリ対象のクラスに含まれる要素) を提供していますか?
java - 生成されたクエリ タイプなしで Querydsl を使用することは可能ですか?
たとえば、生成されたメタモデルなしで JPA Criteria API を使用できます。型の安全性は失われますが、実行時にリフレクションのみを使用して、データ モデルの予備知識がなくてもクエリを作成できます。同じように Querydsl を使用したいと思います。とにかく前もってデータモデルを知らないので、型の安全性は気にしません。
私の最近のプロジェクトでは、主に Querydsl を使用したいと考えています。これは、永続性を超える別のレイヤーを構成するためです。したがって、JPA、JDO、JDBC、Lucene、Hibernate Search、MongoDB、Collections、および RDFBean で同じクエリを使用できることを願っています。
または、説明されている方法で使用できる Querydsl に代わるものはありますか?
NoSQL DB が増加しているためです。さまざまな永続化プロバイダーで同様の抽象レイヤーを構成する他のフレームワークはありますか?
java - QueryDSL: Predicate (BooleanExpression) オブジェクトからテーブル名を抽出する
Predicate
メソッドは、後でデータベース サービス オブジェクトに渡される のリストを動的に作成しています。述語リストに基づいてテーブル結合を作成するには、各述語の基になる生成クラス Q* を決定する必要があります。getType()
または述語を呼び出すgetClass()
ことは役に立ちません。
これは私が述語を構築する方法です:
クエリ構築コード:
querydsl - QueryDSL: PathBuilder から Predicate を生成する
生成された Q* クラスと Java リフレクションを使用する次のメソッドを PathBuilder に置き換えるにはどうすればよいですか?
これはうまくいきますが、別の質問https://stackoverflow.com/questions/15269845/querydsl-extract-table-name-from-predicate-booleanexpression-objectへの回答で代わりにPathBuilderを使用するようにアドバイスされました。ぎこちない newInstance(tableName +"1000")。
2 つの問題: 1) リレーションで eq() または ne() を呼び出せるようになりましたが、like()、notLike() は呼び出せません。2) colObj を取得して、Java リフレクション colObj.getClass().getMethod(. ..)
解決策: ティモの答えのおかげで、2 つの instanceof 条件を除いて反射を完全に捨てて、次のコードを使用します。
java - SpringDataを使用したMongoエンティティでのjodatimeの使用
SpringDataを使用してMongoデータベースに永続化されるエンティティがあります。
これは私のリポジトリです:
そして、QueryDSL生成のための私のpom.xmlのプラグイン
それでも、DateTimeは通常のエンティティとして扱われます(QueryTypeの有無にかかわらず試しました)。日付として扱いたいので、今はできないので、比較を行うことができます。
もちろん、可能であれば、Java Dateにフォールバックしたり、日付をミリ秒として保存したりするのではなく、JodaTimeに固執したいと思います。
java - 複数のデータソースからの結果の結合、フィルタリング、およびページング
既存のJavaアプリケーションは、データアクセスのためにSpring Data / JPA/Hibernateの上に直接構築されています。ほとんどの場合、オブジェクトは、JPQLクエリを実行するSpringリポジトリによってハイドレイトされます。より動的なクエリと並べ替えが必要な場合も、QueryDSLに依存しています。Spring DataはQueryDSLで非常にうまく機能し、SpringDataで得られるすべての優れたページング/並べ替えは引き続きうまく機能します。
現在、既存のシステムを、一部のデータがデータベースにあり、他のデータがRESTfulサービスを介して永続化されているシステムに拡張しています。発生する問題は、永続化されたデータの複数のソースを処理するときに、どのように効率的に結合、フィルタリング、並べ替え、およびページングするかです。あるソースからのデータは、明らかに整合性の制約なしに、主キーを介して別のソースからのデータを参照できます。
コレクションのQueryDSL、Quaere、jaque、SBQL4J、lambdajなどを見てきましたが、結合、フィルタリング、並べ替え、ページングするには、すべてのデータソースのすべてのデータをメモリにロードする必要があるという印象を受けました-特にWebアプリの場合、あまり効率的ではありません。確かに、一部のデータは、たとえばJPQLを介してフィルタリングして、メモリ使用量のヒットを少し減らすことができますが、それでも臭いがします。
Q:異種データソースとテクノロジーのこのシナリオをエレガントに処理するライブラリはありますか?
hibernate - QueryDSL Hibernate: 交差順
私は 0-n の好みを持つエンティティ コーダーを持っています。私のクエリは、コーダー A という名前の 1 人が与えられた場合、少なくとも 1 つの共通の好みを持つすべてのコーダーを見つけることで構成され、A との共通の好みのカウントが降順で並べられます。これまでのところ、次のようになります。
QueryDSL でカスタムオーダーバイを指定する方法はありますか? に関連するものは見つかりませんでしたListPath
。もしそうなら、グアバを使用して交差を計算できます。
前もって感謝します、
ロルフ