Depois de andar uns meses a desenvolver uma aplicação em 3 camadas (Hibernate, Spring e Struts2) no meu computador pessoal, usando a base de dados MySQL, chegou a hora de testar no servidor oficial.
Este servidor usa como SGBD o ORACLE. O problema é que eu já criei as tabelas no ORACLE e as relações só que o ORACLE não suporta a propriedade AUTO-INCREMENT. Esta propriedade estava mapeado no .hbm.xml e o MySQL aceita isto…
Como faço no ORACLE? Será que as coisas vão funcionar ou posso começar a pensar em deitar todo o trabalho ao lixo e ficar á espera que me despeçam?! :lol:
O script “creat sequence generator” que estás a falar pode ser alguma coisa parecida com isto?
CREATE SEQUENCE sequence START WITH 1 INCREMENT BY 1;
CREATE OR REPLACE TRIGGER trigger BEFORE INSERT ON table REFERENCING NEW AS NEW FOR EACH ROW
BEGIN
SELECT sequence.nextval INTO :NEW.ID FROM dual;
END;
Ao inserir o ORACLE executa isto automaticamente? Eu nao vou ter de alterar o meu HQL pois não, ou seja, nao tenho de ser eu a dizer qual o proximo ID a usar?
CREATE SEQUENCE sequence START WITH 1 INCREMENT BY 1;
Se não colocar “START WITH 1 INCREMENT BY 1” ele funciona mas pode colocar um id 15 em outro 40 em outro 10 e assim por diante, não terá uma ordem especifica.
é utilizado para indicar a presença de uma SEQUENCE chamada PCB_ID que deve ser usada para atribuir o ID ao registo efectuado.
Isto funciona. O problema é que quando insiro um objecto filho(ClientInfo) o pai não é criado. No pai deveria aparecer a chave estrangeira referente ao seu filho.
O meu mapeamento para uma base de dados MySQL funciona a 100%.
Para inserir estou a usar o método saveOrupdate da classe HibernateTemplate. Neste caso salvo o pai e o filho tb é salvo devido ao mapeamento efectuado.