問題タブ [micronaut-data]
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 - 結合されたエンティティからのプロパティを使用した Micronaut Data DTO プロジェクション
JPA で Micronaut Data を使用しており、2 つのエンティティがあります。最初のものはRecipe
次のとおりです。
2番目のものは、次のものParseError
を指しRecipe
ます:
ParseError
ここで、API で DTO にプロパティを提供したいと思いますが、Recipe
エンティティ全体ではなく、ManyToOne と OneToMany の関係が含まれているため、この場合は必要ありません。そこで、そのためにプロジェクション DTO を作成しました。
listAll()
にメソッドを追加しましたParseErrorRepository
:
しかし、Micronaut Data はネストされたエンティティからプロパティを投影できないか、DTO またはリポジトリ メソッドで何かを見逃しているようです。
ParseErrorRepository.java:22: エラー: リポジトリ メソッドを実装できません: ParseErrorRepository.listAll()。プロパティのレシピ ID がエンティティに存在しません: ParseError
私も作成しようとしましたRecipeDto
:
それに応じて更新されましたParseErrorDto
:
再び成功しません:
ParseErrorRepository.java:22: エラー: リポジトリ メソッドを実装できません: ParseErrorRepository.listAll()。タイプ [RecipeDto] のプロパティ [レシピ] は、エンティティで宣言された同等のプロパティと互換性がありません: ParseError
Micronaut Data は、DTO プロジェクションによってこのユース ケースを処理できますか? そうでない場合、Micronaut Data でそれを解決する方法はありますか?
spock - 各実行前に MicronautTest データソースのセットアップがクリーンでない
フレームワークをテストするためだけに、このmicronautアプリケーションで基本的なデータベース検索を実行しています。テストセットアップでh2データベースを実行して、flywayデータベース移行でアプリケーションをセットアップしました(本番環境ではpostgresqlを使用します)。これは、スキーマを正しく設定するために使用されます。
私のリポジトリは jpa の Micronaut データを使用して作成されているため、micronaut の完全なコンテキストでテストを実行しないと、リポジトリを作成する方法がわかりません。
私のテストでは、いくつかのスポック テストを実行する前に、setup メソッドにデータを挿入しようとしました。セットアップが 1 回実行されると、次のテスト実行のためにクリーンなデータソースで開始されることを期待します。データは一意の制約に違反するため、実行中の 2 番目のテストのセットアップで SQL エラーが発生して失敗します。これが私のコードです:
delete ステートメントを実行するクリーンアップ ブロックを作成できると思いますが、各テスト実行前にデータソースがクリーンであると予想されるため、これは最後の手段だと思います。