[RESOLVIDO] Anotação JPA

5 respostas
E

Bom dia

estou tentando usar a anotação:
@OneToMany(cascade = CascadeType.ALL, mappedBy = "iSolicitacao")

mas não estou conseguindo, ja vi varios comentarios aqui no forum e mesmo assim nao consegui fazer funcionar

estou fazendo dessa forma:

private String situacao;
    @JoinColumn(name = "i_usuario", referencedColumnName = "i_usuario")
    @ManyToOne(optional = false)
    private Usuario iUsuario;
    @JoinColumn(name = "i_tipo_solicitacao", referencedColumnName = "i_tipo_solicitacao")
    @ManyToOne(optional = false)
    private TipoSolicitacao iTipoSolicitacao;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "iSolicitacao")
    private Collection<Tramite> tramiteCollection;
package br.com.entecnologia.conversor;

import br.com.entecnologia.dao.TipoSolicitacaoDAO;
import br.com.entecnologia.modelo.TipoSolicitacao;
import javax.ejb.EJB;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

@FacesConverter(value = "tipoSolicitacaoConversor")
public class TipoSolicitacaoConversor implements Converter {

    @EJB
    private TipoSolicitacaoDAO dao;
    private TipoSolicitacao tipoSolicitacao = null;

    public TipoSolicitacao getTipoSolicitacao() {
        if (tipoSolicitacao == null) {
            tipoSolicitacao = new TipoSolicitacao();
        }
        return tipoSolicitacao;
    }

    public void setTipoSolicitacao(TipoSolicitacao tipoSolicitacao) {
        this.tipoSolicitacao = tipoSolicitacao;
    }

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        if (value != null && !value.equals("")) {
            tipoSolicitacao = dao.id(Integer.valueOf(value));
            System.out.println("Conversor tipo: " + value + " - banco: " + tipoSolicitacao);
        }

        return tipoSolicitacao;
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        String id = null;
        
        if (value instanceof TipoSolicitacao) {
            tipoSolicitacao = (TipoSolicitacao) value;
            id = String.valueOf(tipoSolicitacao.getiTipoSolicitacao());
            System.out.println("asstring cadastro: " + id);
        }
        return id;
    }
}
[/code] @Override public boolean gravar(Solicitacao solicitacao) { return super.gravar(solicitacao); }
[code]
<p:selectOneMenu id="cboTipoSolicitacao" value="#{solicitacaoControle.solicitacao.iTipoSolicitacao}" converter="tipoSolicitacaoConversor">
                                <f:selectItem itemValue="" itemLabel="Selecione um tipo de solicita&ccedil;&atilde;o" />
                                <f:selectItems value="#{tipoSolicitacaoControle.listaTodos}" var="tipo"
                                               itemValue="#{tipo}" itemLabel="#{tipo.nome}" />
                            </p:selectOneMenu>

eu até utilizei o exemplo do site: http://altieresm.wordpress.com/2011/10/26/combos-aninhados-com-jsf2-e-primefaces/

mas tambem não deu certo

da forma que esta ele me da o seguinte erro

java.lang.NumberFormatException: For input string: "Comprovante de Rendimentos" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:492) at java.lang.Integer.valueOf(Integer.java:582) at br.com.entecnologia.conversor.TipoSolicitacaoConversor.getAsObject(TipoSolicitacaoConversor.java:36) at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:171) at com.sun.faces.renderkit.html_basic.MenuRenderer.convertSelectOneValue(MenuRenderer.java:202) at com.sun.faces.renderkit.html_basic.MenuRenderer.getConvertedValue(MenuRenderer.java:319) at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.getConvertedValue(SelectOneMenuRenderer.java:58) at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1030) at javax.faces.component.UIInput.validate(UIInput.java:960) at javax.faces.component.UIInput.executeValidate(UIInput.java:1233) at javax.faces.component.UIInput.processValidators(UIInput.java:698) at javax.faces.component.UIForm.processValidators(UIForm.java:253) at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214) at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214) at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1172) 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.StandardWrapper.service(StandardWrapper.java:1550) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217) at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:77) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:722)

alguem poderia me ajudar ou me passar um exemplo de como resolver?

5 Respostas

Hebert_Coelho

Oq o cascade tem haver com isso?

Você leu a mensagem de erro? NumberFormatException: For input string: “Comprovante de Rendimentos”

E

entao ele me mostra esse erro quando eu deixo como null o campo no banco quando eu deixo com not null ele dah o seguinte erro

E

e se eu nao utilizo o converter ele me da a seguinte msg

Erro de conversão ao definir o valor 1 para null Converter

Hebert_Coelho

e_novaski:
e se eu nao utilizo o converter ele me da a seguinte msg

Erro de conversão ao definir o valor 1 para null Converter

E você leu a segunda mensagem de erro?
Caused by: java.lang.NullPointerException
at br.com.entecnologia.controle.SolicitacaoControle.gravar(SolicitacaoControle.java:142)

Até agora não entendi pq o cascade ta levando a culpa…

F

Isso não tem nada haver com cascade. :smiley:
O erro está no seu converter.
Utilize o debug para ver oq está acontecendo na hora de converter os dados

Criado 6 de abril de 2013
Ultima resposta 6 de abr. de 2013
Respostas 5
Participantes 3