Como inserir dados usando o selectOneMenu

Meu objetivo é criar um sistema de votação
package com.atividade.Beans;

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

import javax.enterprise.context.SessionScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;

import com.atividade.Dao.CandidatoDao;
import com.atividade.Dao.EleitorDao;
import com.atividade.Dao.VotoDao;
import com.atividade.Model.Candidato;
import com.atividade.Model.Eleitor;
import com.atividade.Model.Pessoa;
import com.atividade.Model.Voto;
import com.atividade.Tx.Transational;

@Named(“votoBean”)
@SessionScoped
public class VotoBean implements Serializable{

private static final long serialVersionUID = 1L;

private Voto voto = new Voto();

private Eleitor eleitor = new Eleitor();

private Candidato candidato = new Candidato();

private Integer votoid;

private Integer candidatoid;

private List candidatos;

@Inject
private FacesContext context;

@Inject
private VotoDao votoDao;

@Inject
private EleitorDao eleitorDao;

@Inject
private CandidatoDao candidatoDao;

public Voto getVoto() {
return voto;
}

public void setVoto(Voto voto) {
this.voto = voto;
}

@Transational
public void gravar(){

  	this.voto.setCandidato(this.candidato);
  	this.votoDao.begin();
                 this.voto.setCandidatoid(this.candidato);
  	this.votoDao.create(this.voto);
  	this.votoDao.commit();
  	this.votoDao.close();

}

@Transational
public void remover(){
System.out.println(this.votoid);
this.votoDao.delete(this.getVoto());
}

public Integer getVotoid() {
return votoid;
}

public void setVotoid(Integer votoid) {
this.votoid = votoid;
}

public Eleitor getEleitor() {
return eleitor;
}

public void setEleitor(Eleitor eleitor) {
this.eleitor = eleitor;
}

public FacesContext getContext() {
return context;
}

public void setContext(FacesContext context) {
this.context = context;
}

public Candidato getCandidato() {
return candidato;
}

public void setCandidato(Candidato candidato) {
this.candidato = candidato;
}

public List getCandidatos() {
return candidatos;
}

public void setCandidatos(List candidatos) {
this.candidatos = candidatos;
}

public Integer getCandidatoid() {
return candidatoid;
}

public void setCandidatoid(Integer candidatoid) {
this.candidatoid = candidatoid;
}

public EleitorDao getEleitorDao() {
return eleitorDao;
}

public void setEleitorDao(EleitorDao eleitorDao) {
this.eleitorDao = eleitorDao;
}

public CandidatoDao getCandidatoDao() {
return candidatoDao;
}

public void setCandidatoDao(CandidatoDao candidatoDao) {
this.candidatoDao = candidatoDao;
}
}

Parte do votar.xhtml

> <body> 
> 		<h:form id="formVotar">
> 			<h:selectOneMenu value="#{votoBean.voto.candidato}" id="candidato" converter="votoconverter">
> 				<f:selectItems value="#{candidatoBean.candidatos}" var="candidato" itemLabel="#{candidato.candidatoId}" itemValue="#{votoBean.candidato.candidatoId}" />
> 			</h:selectOneMenu>
> 			<br></br>
> 			<h:commandButton value="confirma" action="#{votoBean.gravar()}" label="submit" style="height:30px"/>			
> 		</h:form>
> 	</body>

Porem ao tentar inserir o id da tabela candidato na tabela voto, ele apenas tenta inserir um novo candidato e dá erro.
Alguem sabe a maneira certa de se inserir usando SelectOneMenu

O itemValue do seu onemenuselect deve ser igual ao valor da var, pelo menos eu uso assim e da certo, ao comparar com os meus eu vi que isto está diferente. Tente por var=“candidato” e itemValue="#{candidato}"

Bom, isso não deu certo, ao fazer algumas correções na classe Votoconverter.java ele consegue prosseguir dentro de do metodo Votar(), porem ainda estou tendo dificuldades

Meu conversor VotoConverter

@FacesConverter(value = “votoConverter”)
public class VotoConverter implements Converter{

@Override
public Object getAsObject(FacesContext fc, UIComponent uic, String value) {
if(value !=null && !value.isEmpty()){
return uic.getAttributes().get(value);
}
return null;
}

@Override
public String getAsString(FacesContext fc, UIComponent uic, Object object) {
if(object !=null && object instanceof Candidato){
Candidato candidato = (Candidato) object;
uic.getAttributes().put(candidato.getCandidatoId().toString(), candidato);
return candidato.getCandidatoId().toString();
}
return “”;
}
}

O erro que eu estou tendo

GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/AtividadeVI] threw exception [javax.persistence.RollbackException: Error while committing the transaction] with root cause
java.sql.SQLSyntaxErrorException: ORA-00904: “CANDIDATO”: identificador inválido

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:587)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:225)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:53)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:943)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1150)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:4798)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:4875)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1361)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:205)
at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:45)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3003)
at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3503)
at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:89)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:589)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:463)
at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:337)
at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)
at org.hibernate.internal.SessionImpl.doFlush(SessionImpl.java:1435)
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:491)
at org.hibernate.internal.SessionImpl.flushBeforeTransactionCompletion(SessionImpl.java:3201)
at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2411)
at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:467)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:146)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$100(JdbcResourceLocalTransactionCoordinatorImpl.java:38)
at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:220)
at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:68)
at com.atividade.Dao.Dao.commit(Dao.java:54)
at com.atividade.Beans.VotoBean.gravar(VotoBean.java:71)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.el.parser.AstValue.invoke(AstValue.java:279)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:273)
at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
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:218)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
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:962)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
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)