jhipster / generator-jhipster

JHipster is a development platform to quickly generate, develop, & deploy modern web applications & microservice architectures.
https://www.jhipster.tech
Apache License 2.0
21.52k stars 4.02k forks source link

Compilation errors when using relationships to User with custom names #11232

Closed lzkill closed 4 years ago

lzkill commented 4 years ago
Overview of the issue

Compilation errors on a fresh generated app:

[ERROR] location: variable acaoSGQ of type @javax.validation.Valid com.lzkill.sgq.domain.AcaoSGQ
[ERROR] /Users/luiz.kill/Projects/tcc_puc-minas/sgq/src/main/java/com/lzkill/sgq/web/rest/AcaoSGQResource.java:[73,40] cannot find symbol
[ERROR] symbol:   method getUser()
Motivation for or Use Case

The project just does not compile.

Reproduce the error

jhipster-import using a file that contains an entity with two ManyToOne relationships to User.

entity AcaoSGQ {
  descricao TextBlob required
  prazoConclusao Instant required
  novoPrazoConclusao Instant
  dataRegistro Instant required
  dataConclusao Instant
  resultado TextBlob
}

relationship ManyToOne {
  AcaoSGQ{usuarioRegistro required} to User
  AcaoSGQ{usuarioResponsavel required} to User
}
Related issues

11191

Suggest a Fix
JHipster Version(s)
sgq@0.0.0 /Users/luiz.kill/Projects/tcc_puc-minas/sgq
└── generator-jhipster@6.6.0
JHipster configuration, a .yo-rc.json file generated in the root folder
.yo-rc.json file
{
  "generator-jhipster": {
    "databaseType": "sql",
    "devDatabaseType": "h2Disk",
    "enableHibernateCache": true,
    "enableSwaggerCodegen": true,
    "enableTranslation": false,
    "jhiPrefix": "jhi",
    "languages": ["en"],
    "messageBroker": false,
    "nativeLanguage": "en",
    "packageName": "com.lzkill.sgq",
    "packageFolder": "com/lzkill/sgq",
    "prodDatabaseType": "mariadb",
    "searchEngine": false,
    "serviceDiscoveryType": "eureka",
    "skipClient": true,
    "testFrameworks": [],
    "websocket": false,
    "applicationType": "microservice",
    "authenticationType": "oauth2",
    "baseName": "sgq",
    "buildTool": "maven",
    "cacheProvider": "redis",
    "serverPort": "8081",
    "jhipsterVersion": "6.6.0",
    "skipUserManagement": true,
    "clientPackageManager": "npm",
    "embeddableLaunchScript": false,
    "creationTimestamp": 1580823895018,
    "entitySuffix": "",
    "dtoSuffix": "DTO",
    "otherModules": [],
    "blueprints": []
  },
  "entities": [
    "Empresa",
    "Setor",
    "Processo",
    "Produto",
    "Anexo",
    "AcaoSGQ",
    "NaoConformidade",
    "ProdutoNaoConforme",
    "Auditoria",
    "PlanoAuditoria",
    "ItemPlanoAuditoria",
    "Checklist",
    "ItemChecklist",
    "ResultadoChecklist",
    "ResultadoItemChecklist",
    "EventoOperacional",
    "CampanhaRecall",
    "BoletimInformativo",
    "PublicoAlvo",
    "Feed",
    "PublicacaoFeed",
    "CategoriaPublicacao"
  ]
}

JDL for the Entity configuration(s) entityName.json files generated in the .jhipster directory
JDL entity definitions
entity Empresa {
  nome String required minlength(1) maxlength(100)
}
entity Setor {
  label String required unique pattern(/^[ST]-[0-9]{2}[1-9]$/),
  nome String required minlength(1) maxlength(100)
}
entity Processo {
  label String required unique pattern(/^PS-[0-9]{2}[1-9]$/),
  titulo String required minlength(1) maxlength(150),
  descricao TextBlob
}
entity Produto {
  label String required unique pattern(/^PR-[0-9]{2}[1-9]$/),
  nome String required minlength(1) maxlength(100),
  descricao TextBlob
}
entity Anexo {
  nomeArquivo String required pattern(/^[A-Za-z0-9_-]*\.*[A-Za-z0-9]{3,4}$/),
  conteudo AnyBlob required maxbytes(10485760)
}
entity AcaoSGQ {
  tipo TipoAcaoSGQ required,
  descricao TextBlob required,
  prazoConclusao Instant required,
  novoPrazoConclusao Instant,
  dataRegistro Instant required,
  dataConclusao Instant,
  resultado TextBlob,
  status StatusSGQ required
}
/**
 * Representa a violação de algum requisito regulamentar (normas,\nprocedimentos internos, definições de processos, etc)
 */
entity NaoConformidade {
  fato TextBlob required,
  /**
   * O fechamento da NC só é possível se houver identificação de causa
   */
  causa TextBlob,
  prazoConclusao Instant required,
  novoPrazoConclusao Instant,
  dataRegistro Instant required,
  dataConclusao Instant,
  /**
   * Análise de eficácia
   */
  analiseFinal TextBlob,
  status StatusSGQ required
}
/**
 * Representa os produtos produzidos fora dos parâmetros de qualidade estabelecidos
 */
entity ProdutoNaoConforme {
  descricao TextBlob required,
  dataRegistro Instant required,
  /**
   * Análise de eficácia
   */
  analiseFinal TextBlob,
  status StatusSGQ required
}
entity Auditoria {
  tipo TipoAuditoria required,
  descricao TextBlob
}
entity PlanoAuditoria {
  label String required unique pattern(/^PA-[0-9]{2}[1-9]$/),
  nome String required minlength(1) maxlength(100),
  descricao TextBlob,
  dataInicio Instant,
  dataFim Instant
}
entity ItemPlanoAuditoria {
  dataAuditoria Instant required
}
entity Checklist {
  label String required unique pattern(/^CK-[0-9]{2}[1-9]$/),
  titulo String required minlength(1) maxlength(150),
  periodicidade Periodicidade
}
entity ItemChecklist {
  ordem Integer required min(1),
  titulo String required minlength(1) maxlength(150),
  descricao TextBlob
}
entity ResultadoChecklist {
  dataVerificacao Instant required
}
entity ResultadoItemChecklist {
  conforme Boolean required,
  descricao TextBlob
}
entity EventoOperacional {
  tipo TipoEventoOperacional required,
  descricao TextBlob required,
  dataEvento Instant required,
  duracao Duration,
  houveParadaProducao Boolean required
}
entity CampanhaRecall {
  label String unique pattern(/^CR-[0-9]{2}[1-9]$/),
  titulo String required minlength(1) maxlength(150),
  descricao TextBlob,
  dataRegistro Instant required,
  dataInicio Instant,
  dataFim Instant,
  resultado TextBlob
}
entity BoletimInformativo {
  label String unique pattern(/^BL-[0-9]{2}[1-9]$/),
  titulo String required minlength(1) maxlength(150),
  descricao TextBlob,
  dataRegistro Instant required,
  dataPublicacao Instant,
  status StatusPublicacao required
}
entity PublicoAlvo {
  nome String required minlength(1) maxlength(100),
  descricao TextBlob
}
entity Feed {
  tipo TipoFeed required,
  titulo String required minlength(1) maxlength(150),
  descricao String required minlength(1) maxlength(250),
  uri String required unique minlength(1) maxlength(150),
  link String minlength(1) maxlength(150),
  urlImagem String minlength(1) maxlength(150),
  tituloImagem String minlength(1) maxlength(150),
  alturaImagem Integer min(32) max(1024),
  larguraImagem Integer min(32) max(1024),
  dataRegistro Instant required,
  status StatusFeed required
}
entity PublicacaoFeed {
  titulo String required minlength(1) maxlength(150),
  autor String required minlength(1) maxlength(100),
  uri String required unique minlength(1) maxlength(150),
  link String minlength(1) maxlength(150),
  conteudo TextBlob required,
  dataRegistro Instant required,
  dataPublicacao Instant required,
  status StatusPublicacao required
}
entity CategoriaPublicacao {
  titulo String required minlength(1) maxlength(150),
  descricao TextBlob
}
enum TipoAcaoSGQ {
  ACAO_CORRETIVA,
  ACAO_PREVENTIVA,
  CORRECAO_PONTUAL
}
enum StatusSGQ {
  REGISTRADO,
  PENDENTE,
  CONCLUIDO,
  SUSPENSO,
  CANCELADO
}
enum TipoAuditoria {
  INTERNA,
  EXTERNA
}
enum Periodicidade {
  DIARIO,
  SEMANAL,
  QUINZENAL,
  MENSAL,
  BIMESTRAL,
  TRIMESTRAL,
  SEMESTRAL,
  ANUAL
}
enum TipoEventoOperacional {
  PROGRAMADO,
  NAO_PROGRAMADO
}
enum StatusPublicacao {
  RASCUNHO,
  PUBLICADO
}
enum TipoFeed {
  RSS,
  ATOM
}
enum StatusFeed {
  ATIVO,
  INATIVO
}

relationship OneToMany {
  Empresa{setor} to Setor{empresa required},
  CampanhaRecall{setorResponsavel} to Setor{campanhaRecall},
  Setor{processo} to Processo{setor required},
  Empresa{produto} to Produto{empresa required},
  CampanhaRecall{produto} to Produto{produto},
  NaoConformidade{acao} to AcaoSGQ{naoConformidade required},
  PlanoAuditoria{item} to ItemPlanoAuditoria{plano},
  Setor{checklist} to Checklist{setor required},
  Checklist{item} to ItemChecklist{checklist required},
  ResultadoChecklist{resultadoItem} to ResultadoItemChecklist{resultado required}
}
relationship ManyToOne {
  AcaoSGQ{usuarioRegistro required} to User,
  AcaoSGQ{usuarioResponsavel required} to User,
  AcaoSGQ{anexo} to Anexo,
  NaoConformidade{usuarioRegistro required} to User,
  NaoConformidade{usuarioResponsavel required} to User,
  NaoConformidade{anexo} to Anexo,
  ProdutoNaoConforme{produto required} to Produto,
  /**
   * Quando o problema identificado é sistêmico deve-se abrir uma NC
   */
  ProdutoNaoConforme{naoConformidade} to NaoConformidade,
  /**
   * PNCs são tratados com ações únicas e pontuais
   */
  ProdutoNaoConforme{acao} to AcaoSGQ,
  ProdutoNaoConforme{usuarioRegistro required} to User,
  ProdutoNaoConforme{usuarioResponsavel required} to User,
  ProdutoNaoConforme{anexo} to Anexo,
  Auditoria{processo} to Processo,
  PlanoAuditoria{anexo} to Anexo,
  ItemPlanoAuditoria{auditoria required} to Auditoria,
  ItemPlanoAuditoria{usuarioResponsavel required} to User,
  ItemPlanoAuditoria{anexo required} to Anexo,
  Checklist{anexo} to Anexo,
  ItemChecklist{anexo} to Anexo,
  ResultadoChecklist{checklist required} to Checklist,
  ResultadoChecklist{usuarioRegistro required} to User,
  ResultadoChecklist{anexo} to Anexo,
  ResultadoItemChecklist{item required} to ItemChecklist,
  ResultadoItemChecklist{anexo} to Anexo,
  EventoOperacional{processo} to Processo,
  EventoOperacional{usuarioRegistro required} to User,
  EventoOperacional{anexo} to Anexo,
  CampanhaRecall{usuarioRegistro required} to User,
  CampanhaRecall{anexo} to Anexo,
  BoletimInformativo{publicoAlvo required} to PublicoAlvo,
  BoletimInformativo{usuarioRegistro required} to User,
  BoletimInformativo{anexo} to Anexo,
  Feed{usuarioRegistro required} to User,
  PublicacaoFeed{feed required} to Feed,
  PublicacaoFeed{usuarioRegistro required} to User,
  PublicacaoFeed{anexo} to Anexo
}
relationship ManyToMany {
  BoletimInformativo{categoria required} to CategoriaPublicacao{boletim},
  PublicacaoFeed{categoria required} to CategoriaPublicacao{publicacao}
}

paginate Empresa, Setor, Processo, Produto, Anexo, AcaoSGQ, NaoConformidade, ProdutoNaoConforme, Auditoria, PlanoAuditoria, ItemPlanoAuditoria, Checklist, ItemChecklist, ResultadoChecklist, ResultadoItemChecklist, EventoOperacional, CampanhaRecall, BoletimInformativo, PublicoAlvo, Feed, PublicacaoFeed, CategoriaPublicacao with pagination
service Empresa, Setor, Processo, Produto, Anexo, AcaoSGQ, NaoConformidade, ProdutoNaoConforme, Auditoria, PlanoAuditoria, ItemPlanoAuditoria, Checklist, ItemChecklist, ResultadoChecklist, ResultadoItemChecklist, EventoOperacional, CampanhaRecall, BoletimInformativo, PublicoAlvo, Feed, PublicacaoFeed, CategoriaPublicacao with serviceClass
microservice Empresa, Setor, Processo, Produto, Anexo, AcaoSGQ, NaoConformidade, ProdutoNaoConforme, Auditoria, PlanoAuditoria, ItemPlanoAuditoria, Checklist, ItemChecklist, ResultadoChecklist, ResultadoItemChecklist, EventoOperacional, CampanhaRecall, BoletimInformativo, PublicoAlvo, Feed, PublicacaoFeed, CategoriaPublicacao with sgq
filter Empresa, Setor, Processo, Produto, Anexo, AcaoSGQ, NaoConformidade, ProdutoNaoConforme, Auditoria, PlanoAuditoria, ItemPlanoAuditoria, Checklist, ItemChecklist, ResultadoChecklist, ResultadoItemChecklist, EventoOperacional, CampanhaRecall, BoletimInformativo, PublicoAlvo, Feed, PublicacaoFeed, CategoriaPublicacao

Environment and Tools

openjdk version "11.0.5" 2019-10-15 OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.5+10) Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.17.0, JRE 11 Mac OS X amd64-64-Bit Compressed References 20191016_371 (JIT enabled, AOT enabled) OpenJ9 - 77c1cf708 OMR - 20db4fbc JCL - 2a7af5674b based on jdk-11.0.5+10)

git version 2.21.1 (Apple Git-122.3)

node: v12.14.0

npm: 6.13.4

yeoman: 3.1.1

Docker version 19.03.5, build 633a0ea

docker-compose version 1.25.2, build 698e2846

Browsers and Operating System
lzkill commented 4 years ago

Closing this so I can provide a smaller example jdl in another ticket.