JHipster - 带有JDL的实体,带有意外的@Column注释的Java实体类

时间:2017-11-08 17:38:35

标签: jhipster

我尝试使用以下选项之一创建JHipster应用程序: - skip-client。 之后我也禁用了Liquibase。

然后我创建了一个测试条目,类似于:

Client_Id

我把它放到test.jh文件中,在终端上执行: jhipster import-jdl test.jh

当我查看应用程序的Java源代码时,我发现了一个Test.java类,我认为id被自动识别为主键:

entity Test {
    id String,
    hireDate ZonedDateTime
}

但是,雇佣日期注释为:

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;

为什么?

我在我的数据库中为这个实体创建了一个“Test”视图,列也是“Id”和“HireDate”。

但是,通过自动添加@Column注释,我的视图中不存在例如“hire_date”的列名。

我能以某种方式解决这个问题吗?我这个与JHipster生成器相关的东西还是与Spring Boot有关?

还有另一个问题:

@Column(name = "hire_date")
private ZonedDateTime hireDate;

命名Java字段“type”似乎没问题,但JHipster为@Column制作了“jhi_type”

干杯

2 个答案:

答案 0 :(得分:1)

这些是JHipster命名约定:用于列的snake-case和用于java实体字段的camel-case。如果您使用过Liquibase,这样就可以了。

您无法在生成器中配置此行为。

禁用liquibase不会改变您在数据库中创建不遵守JHipster命名约定的视图的事实。 JHipster生成的代码希望以这种方式命名列。您要么尊重这些约定,要么手动修改生成的代码。

或者,您可以尝试jhispter-db-helper module,但似乎这个项目已被放弃。

答案 1 :(得分:0)

无需在jdl中定义id字段,默认免费获取。