web-dev-qa-db-ja.com

jhipsterのユーザーエンティティに属性を追加する

ユーザーエンティティにいくつかの属性を追加したいのですが、それについてグーグルで検索したところ、同様の質問が見つかりました:

jhipsterで生成された既存のエンティティを変更するにはどうすればよいですか?

この投稿の手順を実行したところ、@ Robertoが説明したようにファイルuser.jsonがどこにも見つかりませんでした

1)エンティティを表すjsonファイルを編集します(フィールドの追加/削除、構文は非常に簡単です。'fieldsContainOneToMany '...などの一般的なエンティティプロパティに変更が必要な場合は、ファイルの最後を確認してください)。それを見つける:

<jhipster_root_folder>/.jhipster/entityName.json

どうすればこれを解決できますか?

最善の解決策は、@ Pedroと@alcuvi(JHipsterドキュメントを参照)が提供する2つの解決策の間の妥協点だと思います。

  1. まず、追加のフィールドを使用して「ExtendedUser」エンティティを作成します(gitを使用することを忘れないでください。これを元に戻すか、エンティティを削除する必要があります)。 「ユーザー」との1対1の関係は必要ありません。

  2. その後、「ExtendedUser」からJHipsterアプリケーションの他の部分に多くの部分をコピーできます。

    • Liquibase変更ログ列(users.csvにも追加します)
    • ExtendedUser.Java→User.JavaおよびUserDTO.Java
    • extendedUser-dialog。*→register.html/.controller.jsおよびsettings.html/.controller.js
  3. AccountResource.JavaとUserService.Java(およびそれらを使用する場合はUnitTests)を適応させます。このステップは主に、前のステップでコピーされたゲッターとセッターを使用して実行されます。 JHipsterのドキュメント( https://jhipster.github.io/tips/022_tip_registering_user_with_additional_information.html )がここで役立つ場合があります。

  4. 「ExtendedUser」エンティティを削除します(gitを使用するか、手動で参照してください: jhipsterを使用してエンティティを作成した後にエンティティを削除する方法

*利点*は次のとおりです。

  • JHipsterコード生成機能の使用
  • 追加のエンティティはありません(新しいDBテーブルと多くのファイルが付属しています)

この情報が将来他の開発者に役立つことを願っています!

10
Domi W

Userエンティティは、JHipsterが電子メールやパスワードなどのすべてのユーザー管理を管理するために使用するエンティティです。User.jsonファイルは自動生成されたエンティティであるため、見つかりません。これらの.jsonファイルは、yo jhipster:entity <entityName>を実行した場合にのみ作成されます。

ユーザーエンティティにフィールドを追加/削除するには、手動で行う必要があります。つまり、User.Javaを編集し、liquibaseチェンジセットを作成し、必要に応じてUI内のすべての関連ファイルを変更します。

4
Pedro Madrid

Jhipster(バージョン4)の公式ドキュメントには、これに関するエントリがあります。

https://jhipster.github.io/tips/022_tip_registering_user_with_additional_information.html

要約すれば...

その手動ソリューション。提案された解決策は、ユーザーに追加するフィールドを使用してエンティティを作成し、1対1の関係でエンティティにリンクすることです。

あるいは

JDL-Studioで新しいフィールドを持つExtendedUserを作成する場合、jhipsterimport-jdlコマンドは、エンティティメニューに「extendedUser」オプションを作成します。このオプションで、これらのフィールドの値を設定し、目的のユーザーにリンクできます。

私は最善の解決策ではないと思います...

enter image description hereenter image description here

2
alcuvi

継承はどうですか?組み込みのUserクラスを新しいフィールドで拡張するだけです。例えば、 public class ExtendedUser extends User。そして、コード内でUserクラスをExtendedUserに置き換えます。 dto、serviceなどを更新します。また、必要に応じてクラスキャストを使用できます。どう思いますか?

0
Binakot