Skip to main content

Userエンティティ

注意:これは、ある種のセキュリティを使用するマイクロサービス用に作成されたものではありません。 詳細はここを参照してください。

このエンティティは、JHipsterが内部的に作成および管理する特殊なエンティティです。

これには、いくつかの基本的な情報が含まれています。

  • 姓と名
  • ログイン名
  • Eメールアドレス
  • パスワード(クリアテキストではありません)
  • 権限
  • その他

アプリケーションを最初から作成すると、adminguestなどのデフォルトのユーザが生成されます。

リレーションシップが可能なもの

このエンティティとの間に可能なリレーションシップは次のとおりです。

  • このエンティティに対する多対1の関係(CarUserに対して多対一の関係を持つことができます)。 これにより、新しいエンティティリポジトリに特定のクエリが生成されるため、現在の セキュリティユーザでエンティティをフィルタリングできます。これは一般的な要件です。生成されたAngular/ReactクライアントUIでは、 Carにドロップダウンが表示され、Userを選択できます。
  • Userエンティティに対する多対多および1対1の関係。ただし、もう一方のエンティティは所有者である 必要がありますTeamUserと多対多の関係を持つことができますが、チームのみがユーザーを 追加または削除でき、ユーザーはチームを追加または削除できません)。フロントエンドクライアント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エンティティを手動で変更する必要がないという点で、前の例と同じ利点があります。

独自のデフォルトUserエンティティの作成

これは実際には推奨されませんが、ユーザ管理スキップオプションを使用することで可能になります (JDLのskipUserManagementアプリケーションオプション)。

JHipsterでは、このオプションを内部的(一部のオプションに対して)使用しており、このオプションを使用すると、次のようになります。

  • ユーザー管理コード(フロントエンドおよびバックエンド)を生成しません。
  • Userエンティティを更新できるようになります(任意のフィールドを追加または削除できます)。

さらに、エンティティーを作成し、ユーザー管理を自分で処理する必要があります。

最初の2つのソリューションは非常に簡単に実行できるため、falseのままにしておくことをお勧めします。