Jump to content

ORM no Visual Paradigm: erro com GregorianCalendar


Baderous
 Share

Recommended Posts

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

Link to comment
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
 Share

×
×
  • Create New...

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.