問題タブ [spring-data-commons]

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.

0 投票する
1 に答える
643 参照

java - Spring Data Commons をビルドできないのはなぜですか?

私は自分のマシンに spring-data-commons を構築しようとしています:

私は次のことをしました:

私は得た:

私の現在の設定:

java.util.Date.toInstantさらに、 jdkでメソッドを見つけることができました。

アップデート:

mvn clean install -X出力の一部を次に示します。

これは-target 1.6 -source 1.6、以下のスニペットと関係がありますか?

0 投票する
1 に答える
1696 参照

spring-mvc - @SortDefault Sort オブジェクトをコントローラ メソッドに渡すことはできませんか?

それはそのドキュメントに記載されてい@SortDefaultます

Sort インスタンスをコントローラー ハンドラー メソッドに挿入するときに使用される既定の Sort オプションを定義するための注釈。

しかし、実際には、次の例外があります。

[org.springframework.data.domain.Sort] のインスタンス化に失敗しました: デフォルトのコンストラクターが見つかりません。ネストされた例外は java.lang.NoSuchMethodException: org.springframework.data.domain.Sort.() です

ここで何か見逃しましたか?

0 投票する
0 に答える
614 参照

postgresql - openjpa 2.4.1 で cachedCriteriaQuery が正しくないため、接尾辞 IN を持つ spring-data-jpa クエリ メソッドによるクエリに失敗しました

アップデート:

spring-data-jpa リポジトリ クエリ メソッドのソース コードを掘り下げたところ、根本的な原因は以下のPartTreeJpaQuerycreateQueryのメソッドであることがわかりました。

このメソッドは、spring-data-jpa リポジトリ クエリ メソッド インターフェースを呼び出すときに、RepositoryFactorySupportのQueryExecutorMethodInterceptorのinvokeメソッドによって呼び出されます。

最初の呼び出しでは、cachedCriteriaQuery変数は期待どおりでSELECT s FROM Subtask s WHERE (s.deviceId IN (:deviceIdList) AND s.state IN (:states)) ORDER BY s.idあり、values変数は[[1000000002], [5, 10]]どちらも正しいです。

ただし、2 回目の呼び出しでは、cachedCriteriaQueryisSELECT s FROM Subtask s WHERE (s.deviceId IN ('1000000002') AND s.state IN (5,10)) ORDER BY s.idvaluesis [[1000000003], [5]]. openjpa および jpa クエリに渡される値は正しいように見えますが、criteriaQueryそうではありません。

openjpaライブラリをバージョン2.2.2に変更した場合、このメソッドを呼び出すたびに、cachedCriteriaQuery変数はALWAYS SELECT s FROM Subtask s WHERE (s.deviceId IN (:deviceIdList) AND s.state IN (:states)) ORDER BY s.idになります。

  • cachedCriteriaQuery変数が変更される理由

    これは、PartTreeJpaQuery の QueryPreparer のプライベートかつ最終的なフィールドであり、それを割り当てることができる唯一の方法は、QueryPreparer のコンストラクターでなければなりません。そこでブレークポイントを切り替えましたが、1 回目と 2 回目の呼び出しの間に、このコンストラクターを呼び出したプロセスが見られませんでした。この変数はどのように変更されるのでしょうか?

  • 私が行ったのは、openjpa ライブラリを変更しただけです。

    ただし、上記のコードは spring-data-jpa および/または spring-data-commons です。これは、クエリ作成の動作にどのような影響を与える可能性がありますか?


フィールドとフィールドでサブタスク エンティティをクエリfind INするには、単体テスト コードを次のように指定します。最初のクエリは find IN deviceId and、state andです。2 回目のクエリは find IN deviceIdと stateです。deviceIdstate100000000251010000000035

subtaskDao は以下のようなspring-data-jpa repository query methodインターフェースです

ただし、結果は以下のとおりであり、期待どおりには正しくありません。2 回目のクエリの結果は、 deviceId1000000002ではなくdeviceId のサブタスクになり1000000003ます。

openjpa.Log によると、初回はクエリ(7272行目) Query "SELECT s FROM Subtask s WHERE (s.deviceId IN (:deviceIdList) AND s.state IN (:states)) ORDER BY s.id"。しかし、2回目はクエリを実行しますQuery "SELECT s FROM Subtask s WHERE (s.deviceId IN ('1000000002') AND s.state IN (5,10)) ORDER BY s.id"パラメータがとでないのはなぜですか?:deviceIdList:states

spring使用した、spring-data-jpajdbc driverおよびライブラリのバージョンはopenjpa次のとおりで、jdk は1.8、データベースはPostgreSQL 9.4 windows versionです。

エンティティ クラスは、ビルド時に次のように拡張されます。openjpa-maven-plugin

EntityManagerFactoryBean設定 とは次のpersistence.xmlとおりです。

QueryCacheQuerySQLCacheの両方をfalseに設定しても、正しく動作しません。

ただし、openjpaライブラリをバージョン2.2.2にダウングレードすると、すべて同じコードと構成で正確に機能します。また、@Query以下のように subtaskDao インターフェースに を使用すると、 と一緒でもうまく動作しopenjpa version 2.4.1ます。

私が発見していないトリッキーは何ですか?

0 投票する
2 に答える
4117 参照

java - Spring Data Slice: getSize() と getNumberOfElements() の違い

Spring Data クラスのgetSize()との違いは何ですか?getNumberOfElementsorg.springframework.data.domain.Slice

Javadoc は、ここではあまり役に立ちません。