[RESOLVIDO] Hibernate + JSF: Inserir Dados BD c/ Relacionamento

4 respostas
S

Olá… tenho o seguinte:

2 tabelas:

  • usuarios com campos: username e passaword
  • autorizações com campos: authority e username(chave estrangeira da tabela usuarios)

Meu model tem as seguinte classes:

  • Usuarios.java (com 2 variaveis private String: username e password)
  • Autorizacoes.java (com 1 variavel protected AutorizacoesPK autorizacoesPK e 1 variavel private Usuarios usuarios)
  • AutorizacoesPK.java (com 2 variaveis private String: authority e username)

Consigo cadastrar os Usuários normalmente atraves do Bean que chama o DAO e salva no banco…
Na parte de cadastro de autorizações, criei um box que puxa os usuario do banco usuarios e um radio com as opções ADMIN e USER, para delegar permissões.
Porem na hora que gravar da um erro. Gostaris de um help…
Deve ser algo em relação a inserir em tabelas com relacionamento…
Se precisarem das classes posso postar (so dizer as que precisam analizar pois sao varias)…
Obrigado

PS ERRO: [color=red]org.hibernate.MappingException: Unknown entity: br.com.webtrainer.model.AutorizacoesPK[/color]

4 Respostas

dcorteztec

Pelo erro o hibernate não esta reconhecendo AutorizacoesPK como uma entidade, vc colocou a anotação @entity.

posta suas classes e coloca o stack trace completo.

S

Vou postar as partes principais de cada classe…Se ainda sim necessitar de mais dados posso postar…
No caso dos Usuários, o model tem os 2 campos e quando implemento o DAO uso Usuarios e pronto…
Qual das 2 classes, ou as 2 classes (Autorizacao e AutorizacaoPK) eu implemento no MB e no DAO correspondente…
Tentei expor da melhor forma que foi possível…se puderem ajudar…Obrigado
Meu Objetivo:Grava usuario e senha na tabela Usuarios e cadastras a permisao do usuario na tabela Autorizacoes

Classes Models:

Usuarios.java/*

@Entity

@Table(name = usuarios)

@NamedQueries({

@NamedQuery(name = Usuarios.findAll, query = SELECT u FROM Usuarios u),

@NamedQuery(name = Usuarios.findByUsername, query = SELECT u FROM Usuarios u WHERE u.username = :username),

@NamedQuery(name = Usuarios.findByPassword, query = SELECT u FROM Usuarios u WHERE u.password = :password),

@NamedQuery(name = Usuarios.findByEnable, query = SELECT u FROM Usuarios u WHERE u.enable = :enable)})

public class Usuarios implements Serializable {

private static final long serialVersionUID = 1L;

@Id

<a class="mention" href="/u/basic">@Basic</a>(optional = false)

@Column(name = “username”)

private String username;

<a class="mention" href="/u/basic">@Basic</a>(optional = false)

@Column(name = “password”)

private String password;

<a class="mention" href="/u/basic">@Basic</a>(optional = false)

@Column(name = “enable”)

private boolean enable;

@OneToMany(cascade = CascadeType.ALL, mappedBy = “usuarios”)

private Collection autorizacoesCollection;
public Usuarios() {
}

public Usuarios(String username) {
    this.username = username;
}

public Usuarios(String username, String password, boolean enable) {
    this.username = username;
    this.password = password;
    this.enable = enable;
}

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

public boolean getEnable() {
    return enable;
}

public void setEnable(boolean enable) {
    this.enable = enable;
}

public Collection<Autorizacoes> getAutorizacoesCollection() {
    return autorizacoesCollection;
}

public void setAutorizacoesCollection(Collection<Autorizacoes> autorizacoesCollection) {
    this.autorizacoesCollection = autorizacoesCollection;
}

Autorizacoes.java/*

@Entity

@Table(name = autorizacoes)

@NamedQueries({

@NamedQuery(name = Autorizacoes.findAll, query = SELECT a FROM Autorizacoes a),

@NamedQuery(name = Autorizacoes.findByAuthority, query = SELECT a FROM Autorizacoes a WHERE a.autorizacoesPK.authority = :authority),

@NamedQuery(name = Autorizacoes.findByUsername, query = SELECT a FROM Autorizacoes a WHERE a.autorizacoesPK.username = :username)})

public class Autorizacoes implements Serializable {

private static final long serialVersionUID = 1L;

@EmbeddedId

protected AutorizacoesPK autorizacoesPK;

@JoinColumn(name = username, referencedColumnName = username, insertable = false, updatable = false)

@ManyToOne(optional = false)

private Usuarios usuarios;
public Autorizacoes() {
}

public Autorizacoes(AutorizacoesPK autorizacoesPK) {
    this.autorizacoesPK = autorizacoesPK;
}

public Autorizacoes(String authority, String username) {
    this.autorizacoesPK = new AutorizacoesPK(authority, username);
}

public AutorizacoesPK getAutorizacoesPK() {
    return autorizacoesPK;
}

public void setAutorizacoesPK(AutorizacoesPK autorizacoesPK) {
    this.autorizacoesPK = autorizacoesPK;
}

public Usuarios getUsuarios() {
    return usuarios;
}

public void setUsuarios(Usuarios usuarios) {
    this.usuarios = usuarios;
}

AutorizacoesPK.java/*

@Embeddable

public class AutorizacoesPK implements Serializable {

<a class="mention" href="/u/basic">@Basic</a>(optional = false)

@Column(name = “authority”)

private String authority;

<a class="mention" href="/u/basic">@Basic</a>(optional = false)

@Column(name = “username”)

private String username;
public AutorizacoesPK() {
}

public AutorizacoesPK(String authority, String username) {
    this.authority = authority;
    this.username = username;
}

public String getAuthority() {
    return authority;
}

public void setAuthority(String authority) {
    this.authority = authority;
}

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

Classes MB:

UsuariosMB.java/*

private Usuarios usuario;

public UsuariosMB() {

	if (this.usuario == null) {
		this.usuario = new Usuarios();
	}
}

public void incluirUsuario() {
	try {
		UsuariosDAO dao = new UsuariosDAO();
		dao.salvaOuEdita(getUsuario());
	} catch (ValidationException e) {
		msgError(e.getMessage());
	} catch (Exception e) {
		msgError("Falha");
	}
}

            public Usuarios getUsuario() {
	return usuario;
}

public void setUsuario(Usuarios usuario) {
	this.usuario = usuario;
}

AutorizacoesMB.java/*

private AutorizacoesPK autorizacao;

public AutorizacoesMB() {

	if (this.autorizacao == null) {
		this.autorizacao = new AutorizacoesPK();
	}
	
}

public void incluirAutorizacao() {
	try {
		AutorizacoesDAO dao = new AutorizacoesDAO();
		dao.salvaOuEdita(autorizacao);
	} catch (ValidationException e) {
		msgError(e.getMessage());
	} catch (Exception e) {
		msgError("Falha");
	}
}

public AutorizacoesPK getAutorizacao() {
	return autorizacao;
}

public void setAutorizacao(AutorizacoesPK autorizacao) {
	this.autorizacao = autorizacao;
}

Classes DAO:

UsuariosDAO.java/*

private Session session;

public void conecta() {
	session = new HibernateFactory().getSession();
}

public void desconecta() throws Exception {
	if (this.session != null)
		this.session.close();
}

public void incluirUsuario(Usuarios usuario) throws Exception {
	conecta();
	Transaction tx = session.beginTransaction();
	try{
		this.session.save(usuario);
		tx.commit();		
	}catch (Exception e) {
		tx.rollback();
		throw new Exception("ERRO: " + e.getMessage());
	} finally {
		desconecta();
	}
}

AutorizacoesDAO.java/*

private Session session;

public void conecta() {
	session = new HibernateFactory().getSession();
}

public void desconecta() throws Exception {
	if (this.session != null)
		this.session.close();
}

public void salvaOuEdita(AutorizacoesPK autorizacao) throws Exception {
	conecta();
	Transaction tx = session.beginTransaction();
	try{
		this.session.saveOrUpdate(autorizacao);
		tx.commit();		
	}catch (Exception e) {
		e.printStackTrace();
		System.out.println(e);
		tx.rollback();
		throw new Exception("ERRO: " + e.getMessage());
	} finally {
		desconecta();
	}
}

ERRO:

org.hibernate.MappingException: Unknown entity: br.com.webtrainer.model.AutorizacoesPK

at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:550)

at org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:1338)

at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:180)

at org.hibernate.event.def.AbstractSaveEventListener.getEntityState(AbstractSaveEventListener.java:512)

at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:80)

at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)

at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:507)

at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:499)

at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:495)

at br.com.webtrainer.dao.AutorizacoesDAO.salvaOuEdita(AutorizacoesDAO.java:25)

at br.com.webtrainer.mb.AutorizacoesMB.incluirAutorizacao(AutorizacoesMB.java:27)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.apache.el.parser.AstValue.invoke(AstValue.java:191)

at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)

at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)

at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)

at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:57)

at javax.faces.component.UICommand.broadcast(UICommand.java:383)

at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:321)

at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:296)

at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:253)

at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:466)

at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)

at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)

at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)

at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)

at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)

at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:343)

at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)

at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)

at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)

at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)

at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

at java.lang.Thread.run(Thread.java:619)

org.hibernate.MappingException: Unknown entity: br.com.webtrainer.model.AutorizacoesPK
dcorteztec

Coloque como vc resolveu isso ajuda que tiver o msm problema

S

O que ocorreu não foi devido ao relacionamento e sim a chave primária que era composta que gerava esse ClassePK…e quando criei o DAO eu estava usando em relação ao model PK e o correto seria ao model original da classe… Criei um objeto do tipo Autorizacao…e esse objeto já possuia os atributos username e authority…ae os metodos de CRUD ficaram os mesmos…
Vlw a todos!

Criado 15 de março de 2011
Ultima resposta 18 de mar. de 2011
Respostas 4
Participantes 2