【发布时间】:2015-05-20 07:56:29
【问题描述】:
我有许多 Jhipster 应用程序要搭建。
当您有许多表时,通过键入名称、字段和关系来创建实体既费时又乏味且容易出错。
针对我的数据库运行的 SQL 脚本在哪里?输出脚本的脚本,该脚本可以作为批处理文件运行,以编程方式创建实体。
顺便说一句,很棒的产品。
【问题讨论】:
标签: jhipster
我有许多 Jhipster 应用程序要搭建。
当您有许多表时,通过键入名称、字段和关系来创建实体既费时又乏味且容易出错。
针对我的数据库运行的 SQL 脚本在哪里?输出脚本的脚本,该脚本可以作为批处理文件运行,以编程方式创建实体。
顺便说一句,很棒的产品。
【问题讨论】:
标签: jhipster
JHipster 生成 Liquibase 变更日志,没有 SQL 脚本(但基本相同,只是独立于数据库,版本更容易)。
您想要为生成器编写脚本:它还不存在。
Yeoman 生成器通常不会以这种方式工作:一个很好的理由是每个问题都有相当多的验证,因此通常回答它们比编写脚本更不容易出错。
然后,您有一个特定的用例,因为您想自动生成多个具有相同代码和数据库表的应用程序:我不知道这背后的原因,但您可以理解,对于“正常”情况,这将被认为是一种不好的做法。
【讨论】:
我认为这永远不会太晚。 我阅读了这个post 并尝试了一个自动生成脚本,根据该帖子的说明和其中的链接来生成我的实体。 下面的示例脚本创建了一个“书”实体。 说明:
您将看到您的图书实体正在创建中。 从那里您可以手动编辑实体的 JSON 文件并重新运行(这次是手动!!)该实体的“yo jhipster:entity”命令。 您可以将所有具有所有字段和关系的实体放入脚本中并享受其中的乐趣。 如果您有一个 UML 工具生成这样的脚本,这可能会非常有用。
ping 是为了暂停正在发送到具有焦点的控制台窗口的输入,因为命令“yo jhipster:entity”需要一些时间来呈现第一个提示,有时还需要一些时间。
@if (@CodeSection == @Batch) @then
@echo off
rem Use %SendKeys% to send keys to the keyboard buffer
set SendKeys=CScript //nologo //E:JScript "%~F0"
rem set SendKeys=CScript //nologo //E:JScript
rem Start the other program in the same Window
start "" /B cmd
ping -n 12 -w 1 127.0.0.1 > NUL
%SendKeys% "yo jhipster:entity book{ENTER}"
ping -n 2 -w 1 127.0.0.1 > NUL
%SendKeys% "{Y}{ENTER}"
ping -n 2 -w 1 127.0.0.1 > NUL
%SendKeys% "name{ENTER}"
ping -n 2 -w 1 127.0.0.1 > NUL
%SendKeys% "{ENTER}"
ping -n 2 -w 1 127.0.0.1 > NUL
%SendKeys% "{Y}{ENTER}"
ping -n 2 -w 1 127.0.0.1 > NUL
%SendKeys% " "
ping -n 2 -w 1 127.0.0.1 > NUL
%SendKeys% "{DOWN}"
ping -n 2 -w 1 127.0.0.1 > NUL
%SendKeys% " "
ping -n 2 -w 1 127.0.0.1 > NUL
%SendKeys% "{DOWN}"
ping -n 2 -w 1 127.0.0.1 > NUL
%SendKeys% " "
ping -n 2 -w 1 127.0.0.1 > NUL
%SendKeys% "{ENTER}"
ping -n 2 -w 1 127.0.0.1 > NUL
%SendKeys% "4{ENTER}"
ping -n 2 -w 1 127.0.0.1 > NUL
%SendKeys% "64{ENTER}"
ping -n 2 -w 1 127.0.0.1 > NUL
%SendKeys% "N{ENTER}"
ping -n 2 -w 1 127.0.0.1 > NUL
%SendKeys% "N{ENTER}"
ping -n 2 -w 1 127.0.0.1 > NUL
%SendKeys% "{ENTER}"
goto :EOF
@end
// JScript section
var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.SendKeys(WScript.Arguments(0));
【讨论】: