Estou tentando exportar código a partir do meu diagrama de classes do Jude.
A princípio nenhum problema, escolho o diretório, seleciono as classes que quero exportar e é gerado código na pasta selecionada.
Só que quando abro qualquer classe que tenha um relacionamento 1…n ou m…n ele gera errado.
No exemplo a classe categoria tem várias questoes. O Jude gera na classe Questao um campo categoria e classe Categoria um campo questao, onde esse campo questao da classe categoria não deveria exixtir. Ou seja, aparentemente ele tratando errado o relacionamento e gerando duplicado.
E o mais estranho é que só gera errado em alguns casos, em outros funciona perfeitamente.
importjava.util.Date;publicclassCandidatoextendsPessoaFisica{privateStringpis;privateStringserieCTPS;privateStringnumeroCTPS;privateStringcategoriaCNH;privateStringpretensaoSalario;privateStringpretensaoValorHora;privateStringempresa1;privateDatedataAdmissao1;privateStringfuncao1;privateDatedataDemissao1;privateStringsalario1;privateStringhistorico1;privateStringempresa2;privateDatedataAdmissao2;privateStringfuncao2;privateDatedataDemissao;privateStringsalario2;privateStringhistorico2;privateStringempresa3;privateDatedataAdmissao3;privateStringfuncao3;privateDatedataDemissao3;privateStringsalario3;privateStringhistorico3;/** *senha do candidato para que possa alterar seu curriculo depois que este for submetido */privateStringsenha;/** *Representa o status do candidato no banco. *Quando inativo indica que o candidato foi contratado *pela empresa que disponibilizou a vaga para a *qual ele estava concorrendo. */privateBooleanstatus;privateRespostasrespostas;}
EDIT: Eu havia colocado o trecho de código errado
public class Respostas {
private Integer id;
private Boolean resposta;
}
Certo, era isso mesmo que pensei que tu estivesse fazendo… seguinte…
Existem relacionamentos ---------> e -----------------, o segundo, não sao guardadas nenhuma referencia de ambos os lados.
No primeiro a classe que está sendo apontada A--------> B, ele tem uma referencia de B, mas B não irá ter uma referencia de A… agora voltando a sua duvida de 1 para N, vc pode fazer… clica com o botao direito e vai em multiplicit( ou algo assim ), ai tu coloca em uma ponta da flexa, 1 e na outra *. OK ?
A
almocreversonPJ
Na relação Questoes -> Categoria, eu uso o primeiro tipo de flecha, não deveria então ter uma referencia de Categoria dentro de Questoes somente?
É que nesse caso ele está gerando também a referencia de questoes dentro de Categoria.
C
CassolatoPJ
Então faça o seguinte… se tu está mesmo usando a flecha -----------> então tu vai nas propriedades da sua classe, e lá tem um item… relacionamento ou associações, agora eu não lembro de cabeça, apaga todos que tem lá, e depois novamente tu coloca a flexa que vai funcionar. OK ?
A
almocreversonPJ
Esse negócio de apagar deu certo, mas essa é a única forma? Apagar relação por relação e refazer?
É que o diagrama todo tem cerca de 90 classes, onde metade deve estar dando erro. Não existe alguma outra forma de fazer o código ser gerado corretamente?
Agradeço desde já.
Almo.
A
almocreversonPJ
Se eu criar o diagrama e gerar o código logo em seguida, sem salvar nem fechar, ele gera corretamente o código.
Mas seu eu fechar o Jude e em seguida abrir novamente, ele gera errado.
Nas relações que eu criar usando “Association Class”,antes de fechar, ele gera na classe de associação relações para as duas classes que participam da relação, e depois de fechar ele não gera nenhuma das duas relações e gera nas duas classes que participam da relação relação com a classe de associação.
E quando eu uso "Aggregation to navigable Association (o------>) ", antes de fechar, ele gera na o relacionamento classe que estiver “do lado que tem a bolinha” ele gera uma relação para a classe “do lado que tem a flexinha”. Depois de fechar o jude ele gera nas duas classes um relacionamento para a outra.
C
CassolatoPJ
Tu tem que olhar nas propriedades e ir vendo as associacoes que ele tem, assim tu controla isos tranquilamente, ok ?
A
almocreversonPJ
Tanto antes de fechar o Jude quanto depois quando eu abro novamente o que aparece em"association" pra cada classe continua igual (ver imagem), mas o código gerado depois de fechar está totalmente diferente do primeiro.
public class Truco {
private Integer id;
private TesteTruco testeTruco;
private Jaspion jaspion;
}
VC tem alguma idéia de porque isso acontece depois que fecho o jude?
C
caiosiqueiraPJ
Rapaz,
eu também tenho o Jude, e mesmo sendo a última versão (3.2.1), acontece a mesma coisa.
O Jude não está respeitando a navegabilidade das associações. Não cheguei a reparar se este erro ocorre em outras versões. Acho que vou testar pra verificar.