Olá, pessoal! o/
Meu primeiro post aqui no fórum.
Estou desenvolvendo pela primeira vez uma aplicação EJB. Até agora fui me virando sozinho, mas agora me encontro em uma situação da qual não consigo sair.
O intuito é fazer uma locadora online, mas estou primeiro fazendo uma simples aplicação de cadastro de clientes p/ depois pensar em algo maior.
Depois que preencho o campo do nome do cliente, na página, a mesma me retorna a seguinte exceção…:
java.lang.IllegalArgumentException
Object: br.com.locadejb.beans.Cliente@1010ad7e is not a known entity type.
Eu estou usando:
NetBeans 6.5
GlassFish V2
Banco de Dados Oracle 11G
Código da minha entidade:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.locadejb.beans;
import java.io.Serializable;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
/**
*
* @author thiago
*/
@Entity
@Table(name = "CLIENTE")
@NamedQueries({@NamedQuery(name = "Cliente.findAll", query = "SELECT c FROM Cliente c"), @NamedQuery(name = "Cliente.findByIdCliente", query = "SELECT c FROM Cliente c WHERE c.idCliente = :idCliente"), @NamedQuery(name = "Cliente.findByNome", query = "SELECT c FROM Cliente c WHERE c.nome = :nome"), @NamedQuery(name = "Cliente.findByRg", query = "SELECT c FROM Cliente c WHERE c.rg = :rg"), @NamedQuery(name = "Cliente.findByCpf", query = "SELECT c FROM Cliente c WHERE c.cpf = :cpf"), @NamedQuery(name = "Cliente.findByIdade", query = "SELECT c FROM Cliente c WHERE c.idade = :idade"), @NamedQuery(name = "Cliente.findByStatus", query = "SELECT c FROM Cliente c WHERE c.status = :status")})
public class Cliente implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "ID_CLIENTE")
private Long idCliente;
@Column(name = "NOME")
private String nome;
@Column(name = "RG")
private String rg;
@Column(name = "CPF")
private String cpf;
@Column(name = "IDADE")
private Integer idade;
@Column(name = "STATUS")
private Boolean status;
@JoinColumn(name = "ID_ENDERECO", referencedColumnName = "ID_ENDERECO")
@ManyToOne
private Endereco idEndereco;
@OneToMany(mappedBy = "idCliente")
private List<Locacao> locacaoList;
public Cliente() {
}
public Cliente(Long idCliente) {
this.idCliente = idCliente;
}
public Long getIdCliente() {
return idCliente;
}
public void setIdCliente(Long idCliente) {
this.idCliente = idCliente;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getRg() {
return rg;
}
public void setRg(String rg) {
this.rg = rg;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public Integer getIdade() {
return idade;
}
public void setIdade(Integer idade) {
this.idade = idade;
}
public Boolean getStatus() {
return status;
}
public void setStatus(Boolean status) {
this.status = status;
}
public Endereco getIdEndereco() {
return idEndereco;
}
public void setIdEndereco(Endereco idEndereco) {
this.idEndereco = idEndereco;
}
public List<Locacao> getLocacaoList() {
return locacaoList;
}
public void setLocacaoList(List<Locacao> locacaoList) {
this.locacaoList = locacaoList;
}
public Locacao addLocacao(Locacao locacao){
getLocacaoList().add(locacao);
locacao.setIdCliente(this);
return locacao;
}
public Locacao removeLocacao(Locacao locacao){
getLocacaoList().remove(locacao);
locacao.setIdCliente(null);
return locacao;
}
}
Código da minha SessionBean:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.locadejb.sessions;
import br.com.locadejb.beans.Cliente;
import javax.ejb.Stateful;
import javax.ejb.Stateless;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityManager;
import javax.persistence.Persistence;
/**
*
* @author thiago
*/
@Stateful
public class LocadoraSessionBean implements LocadoraSessionRemote, LocadoraSessionLocal {
public EntityManagerFactory emf = Persistence.createEntityManagerFactory("Locadora");
public EntityManager em = emf.createEntityManager();
public EntityManager getEm() {
return em;
}
public void setEm(EntityManager em) {
this.em = em;
}
public Object persistObj(Object obj){
em.getTransaction().begin();
em.persist(obj);
em.getTransaction().commit();
em.close();
return obj;
}
}
Código do meu bean da camada web:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.locadweb.beans;
import br.com.locadejb.beans.Cliente;
import br.com.locadejb.sessions.LocadoraSessionBean;
/**
*
* @author thiago
*/
public class ClienteWeb {
public LocadoraSessionBean lsb = new LocadoraSessionBean();
public Cliente cliente = new Cliente();
public ClienteWeb(){
}
public Cliente getCliente() {
return cliente;
}
public void setCliente(Cliente cliente) {
this.cliente = cliente;
}
public LocadoraSessionBean getLsb() {
return lsb;
}
public void setLsb(LocadoraSessionBean lsb) {
this.lsb = lsb;
}
public String persistCliente(){
lsb.persistObj(this.cliente);
return "sucesso";
}
public void setAttributs(String nome){
cliente.setNome(nome);
}
}
Código do meu JSF onde dá o erro:
<?xml version="1.0" encoding="UTF-8"?>
<!--
Document : cliente
Created on : 15/08/2009, 13:55:05
Author : thiago
-->
<jsp:root
version="2.1"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:webuijsf="http://www.sun.com/webui/webuijsf">
<jsp:directive.page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"/>
<head><title>Locadora MBC Vídeos</title></head>
<f:view>
<h1>Cadastro de Cliente</h1>
<h:form>
<h:inputText value="#{clienteWeb.cliente.nome}"/>
<h:commandButton value="Cadastrar" action="#{clienteWeb.persistCliente}"/>
</h:form>
</f:view>
</jsp:root>
Então… Precisava saber o que se passa. É o meu primeiro contato com EJB e não consegui encontrar nenhuma ajuda, pesquisando pela internet a fora. >_<[/quote]