Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Baderous

ORM no Visual Paradigm: erro com GregorianCalendar

Mensagens Recomendadas

Baderous

Estou a utilizar o Visual Paradigm for UML 7.2 Enterprise Edition para desenhar o diagrama de classes de uma aplicação, com vista a poder gerar a partir das classes o mapeamento objecto-relacional, gerando o XML necessário bem como as tabelas da base de dados e as classes Java (através da opção do Visual Paradigm "Tools -> Object-Relational Mapping (ORM)"), para depois poder utilizar com o Hibernate num projecto criado no Netbeans.

Neste momento tenho uma classe Utilizador com a seguinte estrutura:

hvuxa9.png

O atributo dataNasc deverá ser mapeado para uma coluna da tabela relativa a esta classe na base de dados MySQL, sendo que essa coluna deverá ter o tipo DATETIME.

Quando tento gerar então os ficheiros necessários ao ORM, é-me apresentado um erro: "Class Utilizador's attribute (dataNasc : GregorianCalendar) must specify a supported type.". Ou seja, está a dar erro no GregorianCalendar, já mudei para Calendar mas continua na mesma, apenas funciona com o tipo Date. Já tive oportunidade de ler um pouco sobre as diferenças entre Date e GregorianCalendar, no entanto, constato pela API que a classe Date é quase toda ela deprecated.

Tendo em conta isto, gostava de saber qual a opção a tomar e/ou qual é a opção que vocês costumam tomar neste caso. Deverei manter o tipo Date e depois utilizar um código do género

Date dateStart = ( new GregorianCalendar( 2006 , 4 , 4 , 0 , 0 , 0 ) ).getTime();

para manipular os valores desse tipo, tal como está aqui e aqui, ou existe alguma forma de meter o tipo GregorianCalendar a funcionar (será que isto é apenas um problema do Visual Paradigm?)? É que já vi exemplos de XML onde tinha lá como tipo o java.util.GregorianCalendar...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

Tipicamente tenho usado o Date, até para compatibilidade quando é necessário algum SQL, a classe Date tem uma classe no package SQL que é quase um mapeamento directo. Quando uso GregorianCalendar tenho de fazer esse mapeamento à mão pelo que o Date é mais simples.

Date está deprecated mas até agora não há classe que a substitua e que permite fazer tudo o que o Date faz da mesma forma simples, e continua a ser a classe de datas mais suportada que conheço.

Não tenho grande solução para o problema que indicas, acho que nunca me deparei com ele. Quando uso Hibernate escrevo o XML ou uso anotações e não me lembro de alguma vez ter encontrado esse erro, tenho de ver os projectos que tenho para confirmar.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Baderous

Sendo assim, devo-me ficar pelo Date para não complicar demasiado (até porque só assim consigo não obter erros), e depois devo usar o método que indiquei acima para instanciar os Dates. Se entretanto souberes a razão do problema diz qualquer coisa.

Obrigado pela resposta.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Baderous

Ainda na mesma onda do ORM no Visual Paradigm, tenho outro problema. Pretendo associar um conjunto de pastas a um utilizador, sendo que essas pastas podem ter subpastas. Estabeleci as seguintes relações:

23v0xeo.png

Utilizei relações de Composição porque, caso o utilizador deixe de existir, a sua lista de pastas desaparece, bem como as pastas constituintes. O mesmo acontece para as pastas e subpastas, ou seja, se uma pasta for eliminada, as suas subpastas (que estão em baixo na hierarquia/árvore de pastas) também devem ser eliminadas.

O problema é que ao gerar o ORM, devolve-me este erro: [24:51:33] [Error] Composition not allowed on self-association: Pasta

Como é que posso resolver este problema?

Depois também terei outro problema que é ter uma outra classe que se vai ligar, por Composição, à classe Pasta, que também me dá erro, dizendo que a classe Pasta não pode ser referenciada por outras classes que não a ListaPastas.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

Bem, infelizmente, não vou conseguir ser grande ajuda, eu não conheço esses erros e começo a desconfiar que é limitação/erros do VP. Eu não uso este tipo de ferramentas, trabalho com DERs e faço o mapeamento manual com XML ou anotações, nunca me deparei com estes problemas.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Baderous

Quando eu peço para me gerar o ORM, ele gera o XML, diagrama ER e a base de dados, isto numa situação sem erros. Nesta situação, ele só não me gera a base de dados, mas ainda não tive oportunidade de dar uma olhadela no XML para ver se está tudo correcto (também ainda não domino muito bem). Mas relativamente à estrutura das classes, achas que estou a fazer alguma coisa mal? É que para dar erro, supostamente estou a violar alguma restrição imposta pelo VP, mas a minha visão da estrutura (já explicada), parece-me correcta...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.