From ba746b8a41f7f90ecb805631a524bee52857dc7e Mon Sep 17 00:00:00 2001 From: Niclas Thobaben Date: Sat, 18 Sep 2021 14:49:48 +0200 Subject: [PATCH] added jpa entity generator --- src/java-jpa-entity.js | 9 ++++++++- templates/jpa-entity.java.mustache | 13 +++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/java-jpa-entity.js b/src/java-jpa-entity.js index c9339c2..e51b59a 100644 --- a/src/java-jpa-entity.js +++ b/src/java-jpa-entity.js @@ -11,6 +11,10 @@ module.exports = { model.package = `${namespace}.${suffix}`; model.dir = model.package.replace(/\./g, '/') model.fields = model.fields.map(field => { + + let field_attr = field.attributes.find(attr => attr.name == 'jpa_sql') + field_attr = field_attr || {} + field.isEnum = service.enums.find(e => e.name == field.type) != null field.name = utils.camelcase(field.name) field.type = javaType.mapJavaType(field.type, namespace, field.isEnum ? '' : 'Record') @@ -23,8 +27,11 @@ module.exports = { field.default = javaType.mapDefaultValue(field.type, field.default) field.nullable = !field.required field.isPkey = jpa.pkey == field.name + field.unique = field.attr.unique + field.creationTimestamp = field_attr.timestamp == 'create' + field.updateTimestamp = field_attr.timestamp == 'update' - console.log("field", field) + return field }) diff --git a/templates/jpa-entity.java.mustache b/templates/jpa-entity.java.mustache index 74f4bb9..be37576 100644 --- a/templates/jpa-entity.java.mustache +++ b/templates/jpa-entity.java.mustache @@ -11,6 +11,10 @@ package {{package}}; import javax.persistence.*; +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Type; +import org.hibernate.annotations.UpdateTimestamp; import lombok.Data; {{#imports}} import {{{.}}}; @@ -34,12 +38,13 @@ import {{{.}}}; public class {{name}} { {{#fields}} - {{#description}}/** {{.}} **/{{/description}} - {{#isPkey}} + {{#description}}/** {{.}} **/{{/description}}{{#isPkey}} @Id{{/isPkey}}{{#type.isCollection}} @OneToMany{{/type.isCollection}} - @Column(nullable = {{nullable}}){{#isEnum}} - @Enumerated(EnumType.STRING){{/isEnum}} + @Column(nullable = {{nullable}}, unique = {{unique}}){{#isEnum}} + @Enumerated(EnumType.STRING){{/isEnum}}{{#updateTimestamp}} + @UpdateTimestamp{{/updateTimestamp}}{{#creationTimestamp}} + @CreationTimestamp{{/creationTimestamp}} private {{{type.name}}} {{name}}; {{/fields}}