Userエンティティ
注意:これは、ある種のセキュリティを使用するマイクロサービス用に作成されたものではありません。 詳細はここを参照してください。
このエンティティは、JHipsterが内部的に作成および管理する特殊なエンティティです。
これには、いくつかの基本的な情報が含まれています。
- 姓と名
- ログイン名
- Eメールアドレス
- パスワード(クリアテキストではありません)
- 権限
- その他
アプリケーションを最初から作成すると、admin
やguest
などのデフォルトのユーザが生成されます。
リレーションシップが可能なもの
このエンティティとの間に可能なリレーションシップは次のとおりです。
- このエンティティに対する
多対1
の関係(Car
はUser
に対して多対一の関係を持つことができます)。 これにより、新しいエンティティリポジトリに特定のクエリが生成されるため、現在の セキュリティユーザでエンティティをフィルタリングできます。これ は一般的な要件です。生成されたAngular/ReactクライアントUIでは、Car
にドロップダウンが表示され、User
を選択できます。 User
エンティティに対する多対多
および1対1
の関係。ただし、もう一方のエンティティは所有者である 必要があります (Team
はUser
と多対多の関係を持つことができますが、チームのみがユーザーを 追加または削除でき、ユーザーはチームを追加または削除できません)。フロントエンドクライアントUIでは、 複数選択ボックスでUser
の選択ができます。
Userエンティティの変更
User
エンティティを変更する必要がある問題が発生した場合は、変更しないことをお勧めします。
このデフォルトエンティティを変更すると、変更の性質によってはアプリケーションが破損する可能性があります。
代わりに、次のような別のソリューションを利用できます。
User
エンティティをコンポジションするエンティティを作成します。User
エンティティを拡張します。
コンポジションを使用
エンティティに新しいフィールドを追加したり、エンティ ティにリレーションシップを追加する必要がある場合は 次のように、別のエンティティを作成するだけです。
entity ApplicationUser {
additionalField Integer min(42) max(42)
}
relationship OneToOne {
ApplicationUser{internalUser(login)} to @OnDelete("CASCADE") @Id User with builtInEntity
}
このコードは次のように動作します。
- フィールドを持つ
ApplicationUser
という名前の新しいエンティティを作成します。 - このエンティティから標準の
User
エンティティへのリレーションシップを作成します。OneToOne
関係を使用して、JHipsterによって作成されたエンティティをこの新しいエンティティにリンクします。- 内部で管理されている
User
エンティティを変更しないために、単一方向の関係を使用します。
これは、JDLを使用して実行できるため、推奨されるソリューションです。
このソリューションは、実際に変更することなくUser
エンティティに新しいフィールドと
リレーションシップ(その他)を追加するのに最適です。
継承の使用
このソリューションは、前のソリューションと同じことを実行しますが、次のことを行う必要があるため、最初のソリューションほど簡単ではありません。
- 新しいエンティティを手動で作成します。
- この新しいエンティティを使用するようにコードを調整します。
- (変更の性質に応じて)この新しいエンティティを保持するために、データベースの移行を管理することになる可能性があります。
ただし、User
エンティティを手動で変更する必要がないという点で、前の例と同じ利点があります。