JAAS tabelas Usuario/Grupo

2 respostas
gRoOve

Boa noite galera, tenho uma aplicação rodando JAAS com JSF usando o realm JDBCRealm, mas fiquei com dúvida com relação as tabelas que devem ser implementadas. Peguei as informações deste site. Na criação das tabelas:

CREATE TABLE usuario(idusuario VARCHAR(10) PRIMARY KEY, senha VARCHAR(128) NOT NULL);
CREATE TABLE grupo(idusuario VARCHAR(10), idgrupo VARCHAR(20) NOT NULL, PRIMARY KEY (idusuario, idgrupo));
ALTER TABLE grupo ADD CONSTRAINT FK_IDUSUARIO FOREIGN KEY(idusuario) REFERENCES usuario(idusuario);

Se eu fizer desta forma irá ocorrer redundância de dados na tabela grupo, pois a cada novo usuário vou criar um novo registro nesta tabela. Do ponto de vista da modelagem do BD esta abordagem está incorreta, o correto seria o usuário possuir uma fk referenciando a tabela grupo. Gostaria de saber se o JAAS irá funcionar se eu implementar as tabelas somente desta forma? Se sim, teria que criar uma trigger pra inserir sempre no grupo os dados referentes a nome/grupo a cada novo registro de usuário?

2 Respostas

getAdicted

Boa tarde galera,

Por gentileza, alguem jah encontrou uma solução para isso?

[]'s

getAdicted

Encontrei uma solução paleativa, pessoal, segue:

Usuário.java:

// bi-directional many-to-one association to Pecuarista @OneToMany(mappedBy = "usuario") private List<Pecuarista> pecuaristas;
Perfil: . . @Id @GeneratedValue private Integer idperfil; private String descPerfil; . . // bi-directional many-to-one association to Usuario @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL) @JoinColumn(name = "idusuario") private Usuario usuario;
Controle.java:

perfil.setDescPerfil(PERFIL); perfil.setUsuario(usuario); dadosSisgappeFacade.save(perfil);
SQL da tabela perfil:CREATE TABLE IF NOT EXISTS `perfil` ( `idperfil` int(11) NOT NULL AUTO_INCREMENT, `descPerfil` varchar(255) DEFAULT NULL, `idusuario` varchar(255) DEFAULT NULL, PRIMARY KEY (`idperfil`), KEY `FKC4E369CC1AD06B0` (`idusuario`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
SQL da tabela usuario:CREATE TABLE IF NOT EXISTS `usuario` ( `idusuario` varchar(255) NOT NULL, `senha` varchar(255) DEFAULT NULL, PRIMARY KEY (`idusuario`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
[]'s

Criado 15 de março de 2012
Ultima resposta 29 de mar. de 2012
Respostas 2
Participantes 2