JHipsterのコード生成を改造
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[JHipster]]
* 目次 [#w384ffb3]
#contents
* 目的 [#xcc771be]
コード生成で、いけてないコードを生成するのだがテンプレー...
このページは、そのコード生成を探すまでの自分のメモである。
* jhipsterのテンプレートの場所を調べる [#s7128a99]
** jsonからエンティティを読み込んでいるファイル [#y079b47b]
node_modules\generator-jhipster\jdl\converters\jdl-to-js...
上記ファイルの、以下のコードでentityが格納されていると思...
setFields();
setRelationships({ unidirectionalRelationships });
** やりたいことは、リレーションに指定されているエンティテ...
どこに何をかけば実現できるのだろうか?
setRelationships
の周辺に答えがありそうだ。
** jhipsterをEverythingというアプリで検索してみる [#a261c...
node_modules\generator-jhipster
というフォルダにテンプレートがありそうな感じがする。
* ejs [#af57737e]
テンプレートの拡張子はejsだ。VS-CODEの拡張を入れておくと...
* どこにGREPをかけるか [#sfff10b9]
*** GREP対象のフォルダ [#ba6c9772]
node_modules\generator-jhipster\generators
*** GREPのファイル名 [#x47cb113]
*.ejs
* 外部PKの場合、生成される画面でリンクの文字列がIDになっ...
name属性があれば、そっちをリンクするように指定したい。
まず、調べる用と思うのは、どのテンプレートが外部キーのID...
** テンプレートの箇所 [#u5208d53]
おそらく、
node_modules\generator-jhipster\generators\entity-client...
で、一覧を出していると思う。forを使っているところをさがし...
このへんが、怪しそう
<%_ for (field of fields) { _%>
<th<% if (!paginationNo) { %> classNam...
<%_ } _%>
<%_ for (relationship of relationships) { _%>
<%_ if (relationship.relationshipManyToOne
|| (relationship.relationshipOneToOne && relationshi...
|| (relationship.relationshipManyToMany && relations...
<th<% if (!paginationNo) { %> <% } %>>...
<%_ } _%>
<%_ } _%>
いや、これは<TD>タグだから、タイトルだな。
リンクのところは以下のようになっている。
<td>
<Button tag={Link} to={`${match.ur...
{<%= entityInstance %>.<%= primar...
</Button>
</td>
ここのprimaryKey.nameではなく、そのエンティティを文字列で...
では、このprimaryKey.nameはどこで格納されているのだろうか?
** primaryKey.nameの格納場所 [#o8664b8c]
* エンティティの生成箇所 [#xf6735bd]
entity-server
** クラスのメンバー変数は、テンプレートではどうあつかわれ...
fields
に格納されており、ループして、各fieldsをとっている
of fields
実際にループは以下のようにされている
<%_ for (const field of fields.filter(field => !field.tr...
public <%= field.javaFieldType %> get<%= field.field...
return this.<%= field.fieldName %>;
}
* SpringBootのJPAでは、private変数にスネーク形式のfield.f...
JPAの問い合わせ構文はフィールドがキャメル形式であることが...
ちょっと昔は、スネーク形式はアンダーバーを2個付けたらJPA...
* fieldのcamel形式は、どうやって取得するのか? [#l235b8bb]
get<%= field.fieldInJavaBeanMethod %>()
とあるから、 field.fieldInJavaBeanMethod で取得できそうだ。
あとは、そのキャメル形式のフィールド名の先頭が小文字だっ...
型は、javaFieldTypeのようだ
* fieldInJavaBeanMethod や、javaFieldTypeの値はどこでいれ...
以下で値を詰め替えているようだが、generatorsフォルダ以下...
node_modules\generator-jhipster\generators\entity-server...
* utilフォルダのfields [#id6072c1]
** 変数を格納しているコードの場所 [#q5b432e7]
node_modules\generator-jhipster\utils\multi-step-transfo...
** コード内容 [#z398fa41]
if (field.fieldNameAsDatabaseColumn === undefined) {
const fieldNameUnderscored = _.snakeCase(field.field...
const jhiFieldNamePrefix = generator.getColumnName(e...
if (isReservedTableName(fieldNameUnderscored, entity...
if (!jhiFieldNamePrefix) {
generator.warning(
`The field name '${fieldNameUnderscored}' is r...
);
field.fieldNameAsDatabaseColumn = fieldNameUnder...
} else {
field.fieldNameAsDatabaseColumn =
`${jhiFieldNamePrefix}_${fieldNameUnderscored}`;
}
} else {
field.fieldNameAsDatabaseColumn = fieldNameUndersc...
}
}
field.columnName = field.fieldNameAsDatabaseColumn;
* fieldにはどんな変数が格納されているのだろう。 [#i199af29]
| fieldのメンバ変数 | 実際の値 |
* fieldにはどんな変数が格納されているのだろう。 [#i199af29]
| fieldのメンバ変数 | |
| id| |
| fieldName | |
| fieldType | |
| mapstructExpression | |
| transient | |
| readonly | |
| autoGenerate | |
| liquibaseAutoIncrement | |
| jpaGeneratedValue | |
| autoGenerateByService | |
| autoGenerateByRepository | |
| jpaGeneratedValue | |
| fieldIsEnum | |
| fieldWithContentType | |
| fieldTypeBlobContent | |
| fieldNameAsDatabaseColumn | |
| columnName | |
| fieldNameAsDatabaseColumn | |
| fieldInJavaBeanMethod | |
| fieldValidateRulesPattern | |
| fieldValidateRulesPatternJava | |
| fieldValidateRulesPatternAngular | |
| fieldValidateRulesPatternReact | |
| fieldValidate | |
| field.fieldValidateRules | |
| field.unique | |
| generateFakeData | |
| path | |
| uniqueValue | |
| relationshipsPath | |
| reference | |
| javadoc | |
| fieldNameHumanized | |
| fieldName | |
| fieldType | |
| fieldNameCapitalized | |
| fieldName | |
どうやって確認しようか。
* もしかしたら、snake形式は、entityの定義に入らない前提に...
そうだった
.jipsterフォルダのエンティティのフィールド名にスネーク形...
そのまま、スネーク形式でjavaのエンティティ名となってしま...
JPAのやり方に沿っていないフィールド名となってしまう。
続けるかどうか、確認ダイアログがでてほしい。
* snake形式だったら、エラーを吐いて停止してほしいが、どこ...
終了行:
[[JHipster]]
* 目次 [#w384ffb3]
#contents
* 目的 [#xcc771be]
コード生成で、いけてないコードを生成するのだがテンプレー...
このページは、そのコード生成を探すまでの自分のメモである。
* jhipsterのテンプレートの場所を調べる [#s7128a99]
** jsonからエンティティを読み込んでいるファイル [#y079b47b]
node_modules\generator-jhipster\jdl\converters\jdl-to-js...
上記ファイルの、以下のコードでentityが格納されていると思...
setFields();
setRelationships({ unidirectionalRelationships });
** やりたいことは、リレーションに指定されているエンティテ...
どこに何をかけば実現できるのだろうか?
setRelationships
の周辺に答えがありそうだ。
** jhipsterをEverythingというアプリで検索してみる [#a261c...
node_modules\generator-jhipster
というフォルダにテンプレートがありそうな感じがする。
* ejs [#af57737e]
テンプレートの拡張子はejsだ。VS-CODEの拡張を入れておくと...
* どこにGREPをかけるか [#sfff10b9]
*** GREP対象のフォルダ [#ba6c9772]
node_modules\generator-jhipster\generators
*** GREPのファイル名 [#x47cb113]
*.ejs
* 外部PKの場合、生成される画面でリンクの文字列がIDになっ...
name属性があれば、そっちをリンクするように指定したい。
まず、調べる用と思うのは、どのテンプレートが外部キーのID...
** テンプレートの箇所 [#u5208d53]
おそらく、
node_modules\generator-jhipster\generators\entity-client...
で、一覧を出していると思う。forを使っているところをさがし...
このへんが、怪しそう
<%_ for (field of fields) { _%>
<th<% if (!paginationNo) { %> classNam...
<%_ } _%>
<%_ for (relationship of relationships) { _%>
<%_ if (relationship.relationshipManyToOne
|| (relationship.relationshipOneToOne && relationshi...
|| (relationship.relationshipManyToMany && relations...
<th<% if (!paginationNo) { %> <% } %>>...
<%_ } _%>
<%_ } _%>
いや、これは<TD>タグだから、タイトルだな。
リンクのところは以下のようになっている。
<td>
<Button tag={Link} to={`${match.ur...
{<%= entityInstance %>.<%= primar...
</Button>
</td>
ここのprimaryKey.nameではなく、そのエンティティを文字列で...
では、このprimaryKey.nameはどこで格納されているのだろうか?
** primaryKey.nameの格納場所 [#o8664b8c]
* エンティティの生成箇所 [#xf6735bd]
entity-server
** クラスのメンバー変数は、テンプレートではどうあつかわれ...
fields
に格納されており、ループして、各fieldsをとっている
of fields
実際にループは以下のようにされている
<%_ for (const field of fields.filter(field => !field.tr...
public <%= field.javaFieldType %> get<%= field.field...
return this.<%= field.fieldName %>;
}
* SpringBootのJPAでは、private変数にスネーク形式のfield.f...
JPAの問い合わせ構文はフィールドがキャメル形式であることが...
ちょっと昔は、スネーク形式はアンダーバーを2個付けたらJPA...
* fieldのcamel形式は、どうやって取得するのか? [#l235b8bb]
get<%= field.fieldInJavaBeanMethod %>()
とあるから、 field.fieldInJavaBeanMethod で取得できそうだ。
あとは、そのキャメル形式のフィールド名の先頭が小文字だっ...
型は、javaFieldTypeのようだ
* fieldInJavaBeanMethod や、javaFieldTypeの値はどこでいれ...
以下で値を詰め替えているようだが、generatorsフォルダ以下...
node_modules\generator-jhipster\generators\entity-server...
* utilフォルダのfields [#id6072c1]
** 変数を格納しているコードの場所 [#q5b432e7]
node_modules\generator-jhipster\utils\multi-step-transfo...
** コード内容 [#z398fa41]
if (field.fieldNameAsDatabaseColumn === undefined) {
const fieldNameUnderscored = _.snakeCase(field.field...
const jhiFieldNamePrefix = generator.getColumnName(e...
if (isReservedTableName(fieldNameUnderscored, entity...
if (!jhiFieldNamePrefix) {
generator.warning(
`The field name '${fieldNameUnderscored}' is r...
);
field.fieldNameAsDatabaseColumn = fieldNameUnder...
} else {
field.fieldNameAsDatabaseColumn =
`${jhiFieldNamePrefix}_${fieldNameUnderscored}`;
}
} else {
field.fieldNameAsDatabaseColumn = fieldNameUndersc...
}
}
field.columnName = field.fieldNameAsDatabaseColumn;
* fieldにはどんな変数が格納されているのだろう。 [#i199af29]
| fieldのメンバ変数 | 実際の値 |
* fieldにはどんな変数が格納されているのだろう。 [#i199af29]
| fieldのメンバ変数 | |
| id| |
| fieldName | |
| fieldType | |
| mapstructExpression | |
| transient | |
| readonly | |
| autoGenerate | |
| liquibaseAutoIncrement | |
| jpaGeneratedValue | |
| autoGenerateByService | |
| autoGenerateByRepository | |
| jpaGeneratedValue | |
| fieldIsEnum | |
| fieldWithContentType | |
| fieldTypeBlobContent | |
| fieldNameAsDatabaseColumn | |
| columnName | |
| fieldNameAsDatabaseColumn | |
| fieldInJavaBeanMethod | |
| fieldValidateRulesPattern | |
| fieldValidateRulesPatternJava | |
| fieldValidateRulesPatternAngular | |
| fieldValidateRulesPatternReact | |
| fieldValidate | |
| field.fieldValidateRules | |
| field.unique | |
| generateFakeData | |
| path | |
| uniqueValue | |
| relationshipsPath | |
| reference | |
| javadoc | |
| fieldNameHumanized | |
| fieldName | |
| fieldType | |
| fieldNameCapitalized | |
| fieldName | |
どうやって確認しようか。
* もしかしたら、snake形式は、entityの定義に入らない前提に...
そうだった
.jipsterフォルダのエンティティのフィールド名にスネーク形...
そのまま、スネーク形式でjavaのエンティティ名となってしま...
JPAのやり方に沿っていないフィールド名となってしまう。
続けるかどうか、確認ダイアログがでてほしい。
* snake形式だったら、エラーを吐いて停止してほしいが、どこ...
ページ名: