Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
Baderous

ORM no Visual Paradigm: erro com GregorianCalendar

Recommended Posts

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...

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other sites
Knitter

Relativamente à estrutura não vejo nada de errado, pelo menos na questão onde te está a dar o erro. Se existir algum erro, não estou a ver qual seja.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.