Dificuldade em salvar um objeto no banco

2 respostas Resolvido
javahibernatemysql
Ederson

Ola, estou seguindo um curso e no momento em que é para salvar no banco ele não salva por causa de um “SelectOneMenu” que estou usando. Fiz um converter, coloquei o relacionamento entre as tabelas, mas mesmo assim apresenta erro. segue abaixo o erro e os codigos do projeto.

Jul 05, 2016 8:48:25 AM com.sun.faces.lifecycle.ProcessValidationsPhase execute
Advertência: For input string: "editora"
java.lang.NumberFormatException: For input string: "editora"
	at java.lang.NumberFormatException.forInputString(Unknown Source)
	at java.lang.Long.parseLong(Unknown Source)
	at java.lang.Long.<init>(Unknown Source)
	at com.unespar.util.converter.EditoraConverter.getAsObject(EditoraConverter.java:26)
	at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:171)
	at com.sun.faces.renderkit.html_basic.MenuRenderer.convertSelectOneValue(MenuRenderer.java:201)
	at com.sun.faces.renderkit.html_basic.MenuRenderer.getConvertedValue(MenuRenderer.java:318)
	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.getConvertedValue(SelectOneMenuRenderer.java:58)
	at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1034)
	at javax.faces.component.UIInput.validate(UIInput.java:964)
	at javax.faces.component.UIInput.executeValidate(UIInput.java:1237)
	at javax.faces.component.UIInput.processValidators(UIInput.java:702)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1220)
	at javax.faces.component.UIForm.processValidators(UIForm.java:253)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1220)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1220)
	at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1164)
	at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Unknown Source)

Classe Entidade

``` package com.unespar.util.entidades;
import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import <a href="http://javax.persistence.Id">javax.persistence.Id</a>;

import javax.persistence.ManyToOne;

@Entity
public class Acervo {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

private String titulo;

private String volume;

private String serie;

private String isbn;

private String cdd_cdu;

private String pagina;

private String tamanho;

@ManyToOne
private PalavraChave palavraChave;

@ManyToOne
private Editora editora;

public Long getId() {
	return id;
}

public void setId(Long id) {
	this.id = id;
}

public String getTitulo() {
	return titulo;
}

public void setTitulo(String titulo) {
	this.titulo = titulo;
}

public String getVolume() {
	return volume;
}

public void setVolume(String volume) {
	this.volume = volume;
}

public String getSerie() {
	return serie;
}

public void setSerie(String serie) {
	this.serie = serie;
}

public String getIsbn() {
	return isbn;
}

public void setIsbn(String isbn) {
	this.isbn = isbn;
}

public String getCdd_cdu() {
	return cdd_cdu;
}

public void setCdd_cdu(String cdd_cdu) {
	this.cdd_cdu = cdd_cdu;
}

public String getPagina() {
	return pagina;
}

public void setPagina(String pagina) {
	this.pagina = pagina;
}

public String getTamanho() {
	return tamanho;
}

public void setTamanho(String tamanho) {
	this.tamanho = tamanho;
}

public PalavraChave getPalavraChave() {
	return palavraChave;
}

public void setPalavraChave(PalavraChave palavraChave) {
	this.palavraChave = palavraChave;
}

public Editora getEditora() {
	return editora;
}

public void setEditora(Editora editora) {
	this.editora = editora;
}

@Override
public int hashCode() {
	final int prime = 31;
	int result = 1;
	result = prime * result + ((id == null) ? 0 : id.hashCode());
	return result;
}

@Override
public boolean equals(Object obj) {
	if (this == obj)
		return true;
	if (obj == null)
		return false;
	if (getClass() != obj.getClass())
		return false;
	Acervo other = (Acervo) obj;
	if (id == null) {
		if (other.id != null)
			return false;
	} else if (!id.equals(other.id))
		return false;
	return true;
}

}

<h1>Classe DAO</h1>

package com.unespar.util.dao;

import java.io.Serializable;
import java.util.List;

import javax.inject.Inject;

import javax.naming.ldap.ManageReferralControl;

import javax.persistence.EntityManager;
import com.unespar.util.entidades.Acervo;

import com.unespar.util.entidades.Editora;

import com.unespar.util.entidades.PalavraChave;

public class AcervoDAO implements Serializable {

@Inject
private EntityManager em;

public void salvar(Acervo acervo){
	em.merge(acervo);
}

public Acervo buscarPeloCodigo(Long id) {
	return em.find(Acervo.class, id);
}

public List<Acervo> buscarTodos(){
	return em.createQuery("from Acervo").getResultList();
}

}

<h1>Classe Service</h1>

package com.unespar.util.services;

import java.io.Serializable;

import javax.inject.Inject;

import com.unespar.util.dao.AcervoDAO;

import com.unespar.util.entidades.Acervo;

import com.unespar.util.jpa.Transactional;

public class CadastroAcervoService implements Serializable {

@Inject
private AcervoDAO acervoDAO;

private Acervo acervo;

@Transactional
public void salvar(Acervo acervo) throws NegocioException{
	if(acervo.getTitulo() == null){
		throw new NegocioException("CAdastrado com sucesso");
		
	}
	
	this.acervoDAO.salvar(acervo);
}

}

<h1>Classe Bean</1>

package com.unespar.util.controller;

import java.io.Serializable;
import java.util.List;

import javax.annotation.PostConstruct;

import javax.faces.bean.ViewScoped;

import javax.inject.Inject;

import javax.inject.Named;
import com.unespar.util.dao.AcervoDAO;

import com.unespar.util.dao.EditoraDAO;

import com.unespar.util.dao.PalavraChaveDAO;

import com.unespar.util.entidades.Acervo;

import com.unespar.util.entidades.Editora;

import com.unespar.util.entidades.PalavraChave;

import com.unespar.util.jsf.FacesUtil;

import com.unespar.util.services.CadastroAcervoService;

import com.unespar.util.services.NegocioException;

@Named
@ViewScoped
public class CadastroAcervoBean implements Serializable {

@Inject
private CadastroAcervoService cadastroAcervoService;

private Acervo acervo;

private List<PalavraChave> chavinhas;

@Inject
private PalavraChaveDAO palavraChaveDAO;

@Inject
private EditoraDAO editoraDAO;

private List<Editora> editoras;

public void salvar(){
	try {
		this.cadastroAcervoService.salvar(acervo);
		FacesUtil.addSuccessMessage("cadstrado com sucesso");
		this.limpar();
	} catch (NegocioException e) {
		FacesUtil.addErrorMessage(e.getMessage());
	}
}

@PostConstruct
public void init(){
	this.limpar();
	this.chavinhas = palavraChaveDAO.buscarTodos();
	this.editoras = editoraDAO.buscarTodos();
}

public void limpar(){
	this.acervo = new Acervo();
}

public Acervo getAcervo() {
	return acervo;
}

public void setAcervo(Acervo acervo) {
	this.acervo = acervo;
}

public List<PalavraChave> getChavinhas() {
	return chavinhas;
}

public List<Editora> getEditoras() {
	return editoras;
}

}

<h1>Classe converter</h1>

package com.unespar.util.converter;

import javax.faces.component.UIComponent;

import javax.faces.context.FacesContext;

import javax.faces.convert.Converter;

import javax.faces.convert.FacesConverter;
import com.unespar.util.cdi.CDIServiceLocator;

import com.unespar.util.dao.EditoraDAO;

import com.unespar.util.entidades.Editora;

@FacesConverter(forClass=Editora.class)
public class EditoraConverter implements Converter {

private EditoraDAO editoraDAO;

public EditoraConverter() {
	this.editoraDAO = CDIServiceLocator.getBean(EditoraDAO.class);
}

@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
	Editora retorno = null;

	if (value != null) {
		retorno = this.editoraDAO.buscarPeloCodigo(new Long(value));
	}

	return retorno;
}

@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
	if (value != null) {
		Long id = ((Editora) value).getId();
		String retorno = (id == null ? null : id.toString());
		
		return retorno;
	}
	
	return "";
}

}

<h1>Codigo tela</h1>

<ui:composition template="/WEB-INF/template/LayoutPadrao.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:o=“http://omnifaces.org/ui”>

<ui:define name="titulo">Cadastro Acervo</ui:define>

<ui:define name="corpo">
	<f:metadata>
		<o:viewParam name="acervo" value="#{cadastroAcervoBean.acervo}" />
	</f:metadata>
	
	<h1>Novo acervo</h1>
	
	<h:form id="frmCadastroAcervo">
		<p:messages id="menssages" autoUpdate="true" closable="true"/>
		
		<p:toolbar  style="margin-top: 20px">
			<p:toolbarGroup>
				<p:commandButton value="Salvar" id="botaosalvar" action="#{cadastroAcervoBean.salvar}" update="frmCadastroAcervo"/>
			</p:toolbarGroup>
			
			<p:toolbarGroup align="right">
				<p:button value="pesquisa" />
			</p:toolbarGroup>
		</p:toolbar>
		
		<p:panelGrid columns="4" id="painel" style="Width: 100%; margin-top: 20px;" columnClasses="rotulo, campo">
			<p:outputLabel value="Codigo" for="codigo"/>
			<p:inputText id="codigo" size="20" maxlength="20" value="#{cadastroAcervoBean.acervo.id}" readonly="true"/>
			
			<p:outputLabel value="Titulo" for="titulo"/>
			<p:inputText id="titulo" size="20" maxlength="80" value="#{cadastroAcervoBean.acervo.titulo}" />
			
			<p:outputLabel value="Volume" for="volume"/>
			<p:inputText id="volume" size="20" maxlength="80" value="#{cadastroAcervoBean.acervo.volume}" />
			
			<p:outputLabel value="Série" for="serie"/>
			<p:inputText id="serie" size="20" maxlength="80" value="#{cadastroAcervoBean.acervo.serie}" />
			
			<p:outputLabel value="ISBN" for="isbn"/>
			<p:inputText id="isbn" size="20" maxlength="80" value="#{cadastroAcervoBean.acervo.isbn}" />
			
			<p:outputLabel value="CDD/CDU" for="cdd"/>
			<p:inputText id="cdd" size="20" maxlength="80" value="#{cadastroAcervoBean.acervo.cdd_cdu}" />
			
			<p:outputLabel value="Pagina" for="pagina"/>
			<p:inputText id="pagina" size="20" maxlength="80" value="#{cadastroAcervoBean.acervo.pagina}" />
			
			<p:outputLabel value="Tamanho" for="tamanho"/>
			<p:inputText id="tamanho" size="20" maxlength="80" value="#{cadastroAcervoBean.acervo.tamanho}" />
			
			<p:outputLabel value="Editora" for="editora"/>
			<p:selectOneMenu value="#{cadastroAcervoBean.acervo.editora}" id="editora">
				<f:selectItem itemLabel="Selecione uma editora"/>
				<f:selectItems value="#{cadastroAcervoBean.editoras}" var="editora" itemLabel="#{editora.nome}" itemValue="editora"/>
			</p:selectOneMenu>
			
			<p:outputLabel/>
		</p:panelGrid>
	</h:form>
</ui:define>

</ui:composition>

2 Respostas

L
Solucao aceita

itemValue="#{editora}"/>

Ederson

Era Isso Mesmo Logus…Muito obrigado.valeuuuuuuuu

Criado 5 de julho de 2016
Ultima resposta 5 de jul. de 2016
Respostas 2
Participantes 2