私は Spring Roo を初めて使用し、アプリケーションを構築しようとしています。値を文字列フィールドに選択するには、コンボ ボックスが必要です。これはかなり一般的な要件です。Spring Roo Pizza の例では、列挙されたデータ型を使用してこれを示してenum constant
いますが、将来値を変更できるように、管理者がソース値を編集できるようにする必要があります (つまり、テーブル内)。さらに、メンテナンスを容易にするために、単一のテーブルを使用してこれらすべてのリストを含めることをお勧めします。
リストを生成したいSQLは次のようになります。
listvals FROM listTable WHERE listtype = “status”; を選択します。
次に、ドロップダウン ボックスには、アクティブ、非アクティブのようなものが表示されます。ユーザーがいずれかを選択すると、文字列「Active」がターゲット フィールドに格納されます。2 番目の例では、次のように使用できます。
listvals FROM listTable WHERE listtype = “State” を選択します。
2 番目のドロップダウン ボックスには、次のように表示されます: アラスカ、カリフォルニア、フロリダ。ユーザーがいずれかを選択すると、文字列「Florida」がターゲット フィールドに格納されます。
私の中心的な質問は、Roo でこの種の機能をどのように実現するかということです。
Pizza Shop クイック スタートをサンドボックスとして使用して、次のようなターゲット フィールドを定義しようとしました。
変更しました:field reference --fieldName base --type ~.domain.Base
に:
field reference --fieldName base --type ~.domain.Base --referencedColumnName name
このエラーを返したもの:
@JoinColumn name is required if specifying a referencedColumnName
最初の問題は、この時点で roo がまだデータベースの行 ID 列を作成していないため、ベース テーブルの結合列の名前がわからないことです。しかし、1:M 結合を使用してスクリプトを実行するまで待つと、pizza.base 列は必要な文字列ではなく整数として定義されます。
そこで、バニラ ピザ ショップの roo スクリプトを実行し、バニラ データベースに問い合わせました。(roo は、私が確認できるデータベース作成用の SQL スクリプトを生成しますか?) 結局のところ、roo は行 ID 列「id」に BigInt という名前を付けています。(また、postgresがプライマリインデックス/行IDに推奨するSEQUENCE機能を利用していないように見えることにも注意してください。)
だから今私は実行します:
field reference --fieldName base --type ~.domain.Base --referencedColumnName name --joinColumnName id
Rooはこれが好きです!Surefire レポートで判読不能なエラーが多数表示される
までは。perform tests
この問題を解決することは、上記の全体的な要件を満たすためのステップ 1 にすぎないことに注意してください。ステップ 2 では、何らかのフィルターまたは where 句を参照ステートメントに挿入しようとします。これは--fetch
オプション (Roo サポート ドキュメント ( http://docs.spring.io/autorepo/docs/spring-roo/1.2.5.RELEASE/reference/html/command-index.html#command -index-finder-commands - JPA レベルでのフェッチ セマンティクス (デフォルト値なし)
しかし、私が正しい軌道に乗っているかどうかを確認したり、「フェッチセマンティクス」をモデル化したりするための例を見つけることができません。別の可能性はfield list
、ドロップダウン値のリストを含むクラスを定義するために使用することです。これには同様の修飾子 --fetch
がありますが、やはり例が見つかりません。
上記のコアの質問に答えていただけると助かります。
ありがとう!