問題タブ [grails-3.3]
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.
rest - Grails REST POST が代替識別子列を持つ要素で失敗する
これは、私が取り組んでいる実際のプロジェクトの縮小例です。次のドメインがあります。
シンプル、電話、電話タイプ。
PhoneType は cn の代替 ID 列を使用します
デフォルトのRESTコントローラーを生成しますgrails generate-all PhoneType PhoneNumber
私は残りのプロファイルプロジェクトを使用しています。PhoneType を問題なく作成できます。
問題は、REST を使用してこの PhoneType で PhoneNumber を作成できないことです。(デフォルトの「id」列を使用して) 代替 ID を指定しない場合は、指定できます。
これは機能しますが
これは機能するはずで、フレームワークのバグなのか、それとも識別子として「id」を持たない grails で REST リソースを操作できるようにするために追加の構成が必要なのか疑問に思います。
ご指摘ありがとうございます。
jpa - grails 3 データ サービスで JPA QL との後方関連付けをクエリすると、オブジェクトで MissingMethodException executeQuery が実行されますか?
著者とその書籍を収集するデータベースに、書籍をインスタンスAuthor
として追加します。Book
ただし、Author
データベースにまだ追加されていない書籍がある場合があります。Author
これが、実際に出版された本の数を示す、外部のサニティ カウンターがある理由です。がデータベース内のインスタンスnumberOfKnownBooks
の数と等しい場合、の完全な参考文献があると見なされます。Book
Author
Authors
参考文献が完全なすべてを取得するための SQL クエリは、次のように SQL で記述されます。
ここでの問題は、 join が反対方向を指していることです。通常の例では、通常、 join を取得するためのクエリの作成方法が示されていますが、その逆でBooks
はAuthors
ありません。
単純なJPQLでこのようなことを行う方法を説明しているいくつかの記事をstackoverflowで見つけました(グループを差し引いて...複雑化する)here@Query
が、GORM 6.1+のデータサービスの注釈によって期待されるDSLでこれを行うと、私はAST によって生成されたコードのダンジョンで発生する例外を取得し、 でメソッドexecuteQuery
が見つからないことを示しますjava.lang.Object
。これは合理的な苦情ですが、なぜそれが起こっているのかわかりません。残念ながら、このコードをステップ デバッグする方法はありません。
これは私のデータ サービスです。
UPDATE : jeff の指示に従って、役に立たない注釈 @GrailsCompileStatic および @Transactional を削除しました
FULL SOLUTION、適切な JPQL クエリを使用: