JHipster领域语言 (JDL) - 实体和属性

概要

  1. 语法
  2. 示例
    1. 简单例子
    2. 自定义表名
    3. 属性
    4. 属性校验
    5. 声明二进制
    6. 正则表达式
    7. 注释
  3. 字段类型和校验

语法

实体声明如下:

[<entity javadoc>]
[<entity annotation>*]
entity <entity name> [(<table name>)] {
  [<field javadoc>]
  [<field annotation>*]
  <field name> <field type> [<validation>*]
}
  • <entity name> 实体名称,
  • <field name> 实体属性名称,
  • <field type> JHipster支持的属性类型,
  • 以下为可选项:
    • <entity javadoc> 实体描述,
    • <entity annotation> 实体的选项(有关可用选项的完整列表,请参见选项),
    • <table name> 数据库表名称(如果要指定与实体名称自动转换不同的名称),
    • <field javadoc> 属性描述,
    • <field annotation> 属性的选项,
    • <validation> 属性的校验规则。

示例

简单例子

entity A

这等效于:

entity A(a) {}

前者是一种较简单的形式,没有指定”主体”(字段的大括号)和表名。


自定义表名

也可以指定自定义表名称:

 entity A(my_super_entity)

属性

entity A {
  name String required
  age Integer
}

属性校验

entity A {
  name String required
  age Integer min(42) max(42)
}

声明二进制

JHipster提供了一个不错的选择,因为可以在图像类型或任何二进制类型之间进行选择。 JDL允许您执行相同的操作。 使用编辑器创建一个自定义类型(请参阅DataType),并根据以下约定为其命名:

  • AnyBlobBlob 创建一个”任意”的二进制类型的字段;
  • ImageBlob 创建一个图像的字段。
  • TextBlob 为CLOB(长文本)创建一个字段。

而且,您可以根据需要创建任意数量的数据类型。


正则表达式

这是一个确定的验证(仅适用于String类型),其语法为:

entity A {
  name String pattern(/^[A-Z][a-z]+\d$/)
}

让我们分解一下:

  • pattern 是用于声明正则表达式验证的关键字(使用常规括号)
  • /.../ 该模式在两个斜杠内声明
  • \ 反斜杆不需要进行转义

注释

可以在JDL中对实体和字段进行注释,并且注释会生成文档(Javadoc或JSDoc,取决于后端)。

/**
 * This is a comment
 * about a class
 * @author Someone
 */
entity A {
  /**
   * This comment will also be used!
   * @type...
   */
   name String
   age Integer // this is yet another comment
}

这些注释稍后将由JHipster添加为Javadoc注释。 JDL拥有自己的注释类型:

  • // an ignored comment
  • /** not an ignored comment */

因此,以//开头的任何内容都被视为JDL的内部注释,因此不会被视为Javadoc。 请注意,在解析期间,以开头的JDL Studio指令将被忽略。

注释的另一种形式是以下注释:

entity A {
  name String /** My super field */
  count Integer /** My other super field */
}

在这里,A的名称将用 My super field注释,B则用 My other super field注释。

是的,逗号不是强制性的,但最好不要使用逗号,以免在代码中出错。 如果您想混合使用逗号和以下注释,请当心!

entity A {
  name String, /** My comment */
  count Integer
}

A的名字将没有注释(because the count will)。


字段类型和校验

每个字段类型都有其自己的校验列表。 以下是JDL支持的类型:

JDL类型 校验规则
String required, minlength, maxlength, pattern, unique
Integer required, min, max, unique
Long required, min, max, unique
BigDecimal required, min, max, unique
Float required, min, max, unique
Double required, min, max, unique
Enum required, unique
Boolean required, unique
LocalDate required, unique
ZonedDateTime required, unique
Instant required, unique
Duration required, unique
UUID required, unique
Blob required, minbytes, maxbytes, unique
AnyBlob required, minbytes, maxbytes, unique
ImageBlob required, minbytes, maxbytes, unique
TextBlob required, unique