我已经尝试过使用带有和不带有DTO生成的JHipster v6.0.1(通过MapStruct提供)。项目在两种配置中都能正常工作。但是,我注意到,无论选择DTO还是在Hibernate实体上生成Jackson批注。由于DTO用于到JSON的串行化,在这种情况下它们不是多余的吗?
也许我缺少一些东西,也许它们是与Elasticsearch一起使用所必需的?否则,这似乎应该是一个小错误。
我已经生成了许多JHipster项目来测试其功能。下面提供了一个简单的JDL文件:
application {
config {
baseName proj
applicationType monolith
packageName com.mycompany.proj
authenticationType session
buildTool maven
databaseType sql
devDatabaseType h2Memory
prodDatabaseType postgresql
cacheProvider no
enableHibernateCache false
clientFramework react
useSass true
enableTranslation false
}
entities *
}
entity Box {
label String required
}
entity Item {
count Integer required
}
entity Product {
description String required,
}
entity Sku {
barcode String required,
}
relationship OneToMany {
Box{item} to Item{box},
Item{product} to Product{item}
}
relationship OneToOne {
Product{sku(barcode)} to Sku
}
// Set pagination options
paginate * with pagination
// Set service options (prefer class to interface for less boilerplate)
service * with serviceClass
// Use Data Transfert Objects (DTO)
dto * with mapstruct
使用DTO选项时,不应在实体上生成任何Jackson注释。这样可以使生成的各个层保持“干净”。