問題タブ [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.
spring-boot - Spring Data REST / Spring Data Commons ドメイン イベント
このブログとこの参考資料を読み、Spring Data Commons ドメイン イベントは、Spring Data REST AbstractRepositoryEventListener イベント (つまり、onBeforeSave、onAfterDelete など) 内に適用すると機能しないと判断しました。
人:
PersonCompletedEvent:
更新: PersonHandler のコメントを読んでください。これが、この例でアプリケーション イベントが機能しない理由です。
PersonHandler:
抽象エンティティ:
パーソンリスナー:
これを広範囲にデバッグしましたが、 DomainEvents がRepositoryEntityControllerとEventPublishingRepositoryProxyPostProcessor$EventPublishingMethodInterceptorの間のどこかにドロップされているようです。
実際に起こっていることは、エンティティの別のインスタンスが実際に傍受されており、その時点で DomainEvents が存在しなくなっていることです。@AfterDomainEventPublication clearDomainEvents() が現時点で呼び出されていないことを確認できます。これにより、一時的な domainEvents と関係があると思われます。
Spring Data REST のRepositoryEntityControllerは次のようになります。
1 でコメントされた行を実行した後、私の domainObject には domainEvents があり、それが 2 でコメントされた行、invokeSave に入ります。ブレークポイントがRepositoryEntityControllerとEventPublishingRepositoryProxyPostProcessor$EventPublishingMethodInterceptorでキャッチされると、実際にはオブジェクトの別のインスタンス (別のオブジェクト ID) であり、欠けているのは domainEvents だけで、何も発生しません。
更新: 以下の私のコメントを読んでください。エンティティが切り離されているため、機能していません。
spring-data - Spring Data Page がソートを JSON に正しくシリアライズしない
この問題は Spring-Data リリース 2 で発生しました。最新バージョン 1.13.9 (およびそれ以前) では問題なく動作します。
コントローラーコード:
Spring-Data 2 スタイルでも同じ:
構成:
また、Java 構成と XML 構成を使用して、Spring Boot を使用しない単純な Spring アプリケーションを試しました。結果は同じです:
Spring-Data のバージョンを 1.X に変更すると、オブジェクトの並べ替えに対して正しい JSON 応答が得られます。
すべてを試したようですが、変更ログで並べ替えの変更に関する通知は見つかりませんでした。Spring JIRA ではそのような問題は見つかりませんでした。
問題は、次のような並べ替えで spring-data 2.X libs JSON を取得する方法です。
それ以外の: