[RESOLVIDO] javax.ejb.EJBException at $Proxy212.getListaProdutosUsuarioLogado(Unknown Source)

Estou tentando pegar todas as ocorrencias de produtos do usuario logado : "DONO_PRDT"

Quero listar todo produto na tabelas produtos que tem o como DONO_PRDT o string que estou passando :
String usr = usuarioLogado.getUsuario();

Mas esta dando (Unknown Source)!!!
Nao entendi o porquê disso.
Alguem pode me ajudar?

Socorro!!! :oops:

Salvei no gdocs os javas, Derby (GRAB) e comnados SQL que usei para popular as tabelas
https://docs.google.com/open?id=0BwEqvrpf-cBMU0lOMHhCcWtqdlk

javax.ejb.EJBException

(...)

	at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
	at $Proxy212.getListaProdutosUsuarioLogado(Unknown Source)
	at ejb.AMLMBean.getListaProdutosUsuarioLogado(AMLMBean.java:71)
(...)

Metodos que estao causando esse erro:

@ManagedBean
@SessionScoped
public class AMLMBean {

(...)

    public List<Produtos> getListaProdutosUsuarioLogado() {
        String usr = usuarioLogado.getUsuario();
        return aMLFachada.getListaProdutosUsuarioLogado(usr);
    }//getListaProdutosAVenda
@Stateless
public class AMLFachada implements AMLFachadaLocal {
    @PersistenceContext(unitName = "AML0615-ejbPU")
    private EntityManager em;

(...)

 @Override
    public List<Produtos> getListaProdutosUsuarioLogado(String usuario) {
        Query query = em.createNamedQuery("Produtos.findByDonoPrdt");
        query.setParameter("donoPrdt", usuario);
        return query.getResultList();
    }//getListaProdutosUsuarioLogado
@Entity
@Table(name = "PRODUTOS")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Produtos.findAll", query = "SELECT p FROM Produtos p"),
    @NamedQuery(name = "Produtos.findByCodgPrdt", query = "SELECT p FROM Produtos p WHERE p.codgPrdt = :codgPrdt"),
    @NamedQuery(name = "Produtos.findByVndaPrdt", query = "SELECT p FROM Produtos p WHERE p.vndaPrdt = :vndaPrdt"),
    @NamedQuery(name = "Produtos.findByDonoPrdt", query = "SELECT p FROM Produtos p WHERE p.donoPrdt = :donoPrdt"),
    @NamedQuery(name = "Produtos.findByNomePrdt", query = "SELECT p FROM Produtos p WHERE p.nomePrdt = :nomePrdt"),
    @NamedQuery(name = "Produtos.findByDescPrdt", query = "SELECT p FROM Produtos p WHERE p.descPrdt = :descPrdt"),
    @NamedQuery(name = "Produtos.findByVlorPrdt", query = "SELECT p FROM Produtos p WHERE p.vlorPrdt = :vlorPrdt")})

public class Produtos implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @NotNull
    @Column(name = "CODG_PRDT")
    private Integer codgPrdt;
    @Column(name = "VNDA_PRDT")
    private Short vndaPrdt;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 25)
    @Column(name = "NOME_PRDT")
    private String nomePrdt;
    @Size(max = 60)
    @Column(name = "DESC_PRDT")
    private String descPrdt;
    @Column(name = "VLOR_PRDT")
    private Long vlorPrdt;
    @OneToMany(mappedBy = "codgPrdt")
    private Collection<Compravenda> compravendaCollection;
    @JoinColumn(name = "DONO_PRDT", referencedColumnName = "USUARIO")
    @ManyToOne(optional = false)
    private Usuarios donoPrdt;
javax.ejb.EJBException
	at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5215)
	at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5113)
	at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4901)
	at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2045)
	at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1994)
	at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:222)
	at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
	at $Proxy192.getListaProdutosUsuarioLogado(Unknown Source)
	at ejb.AMLMBean.getListaProdutosUsuarioLogado(AMLMBean.java:71)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at javax.el.BeanELResolver.getValue(BeanELResolver.java:363)
	at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
	at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
	at com.sun.el.parser.AstValue.getValue(AstValue.java:138)
	at com.sun.el.parser.AstValue.getValue(AstValue.java:183)
	at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:224)
	at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
	at javax.faces.component.UIData.getValue(UIData.java:731)
	at org.primefaces.component.datatable.DataTable.getValue(DataTable.java:786)
	at javax.faces.component.UIData.getDataModel(UIData.java:1798)
	at javax.faces.component.UIData.getRowCount(UIData.java:356)
	at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:602)
	at org.primefaces.component.datatable.DataTableRenderer.encodeRegularTable(DataTableRenderer.java:248)
	at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:224)
	at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:108)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1764)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1542)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
	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:849)
	at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)
	at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045)
	at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)
	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)
Caused by: java.lang.IllegalArgumentException: You have attempted to set a value of type class java.lang.String for parameter donoPrdt with expected type of class ejb.Usuarios from query string SELECT p FROM Produtos p WHERE p.donoPrdt = :donoPrdt.
	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.setParameterInternal(EJBQueryImpl.java:1258)
	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.setParameter(EJBQueryImpl.java:1135)
	at org.eclipse.persistence.internal.jpa.EJBQueryImpl.setParameter(EJBQueryImpl.java:81)
	at ejb.AMLFachada.getListaProdutosUsuarioLogado(AMLFachada.java:79)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052)
	at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124)
	at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5388)
	at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619)
	at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
	at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
	at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162)
	at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:861)
	at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
	at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:370)
	at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5360)
	at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5348)
	at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:214)
	... 64 more


Oi, boa tarde.

O problema parece estar no “LIKE”: parece estar solto…

SEU SELECT:

SELECT t1.CODG_PRDT, t1.DESC_PRDT, t1.NOME_PRDT, t1.VLOR_PRDT, t1.VNDA_PRDT, t1.DONO_PRDT FROM USUARIOS t0, PRODUTOS t1 WHERE ( LIKE ? AND (t0.USUARIO = t1.DONO_PRDT))

Tente colocar:

SELECT t1.CODG_PRDT, t1.DESC_PRDT, t1.NOME_PRDT, t1.VLOR_PRDT, t1.VNDA_PRDT, t1.DONO_PRDT FROM USUARIOS t0, PRODUTOS t1 WHERE ( t0.USUARIO LIKE ? AND (t0.USUARIO = t1.DONO_PRDT))

Abraço,

Obrigado pela resposta rodrigo
LIKE foi uma tentativa diferente para o problema inspirado nesse codigo:

Mas nao eh o problema em si, mudei ja o erro.

E esse codigo SELECT t1.CODG_PRDT, t1.DESC_PRDT, t1.NOME_PRDT, t1.VLOR_PRDT, t1.VNDA_PRDT, t1.DONO_PRDT FROM USUARIOS t0, PRODUTOS t1 WHERE ( LIKE ? AND (t0.USUARIO = t1.DONO_PRDT))
quem ta gerando eh o netbeans + glassfish + java derby
Via metodos que informei abaixo

Você pode criar novos métodos de negócio no bean de sessão e no bean gerenciado JSF e novas páginas JSF que acessem esses métodos.

Por exemplo, para cadastrar um cliente você deve instanciar um novo bean de entidade e chamar o método em.persist(), passando o novo bean como parâmetro para que o mesmo seja adicionado à tabela. Para remover uma instância, execute o método em.remove(), passando o bean de entidade a ser removido como parâmetro.

Você também pode criar novas consultas adicionando uma named query ao bean de entidade, seguindo o formato:

@NamedQuery(name = "Clientes.findByDDD",
query = "SELECT c FROM Clientes c WHERE c.telefone LIKE :DDD"),

Para executar a consulta, crie uma query, defina os valores de parâmetros e a execute em um método de negócio no bean de sessão, conforme mostrado abaixo:


public List<ejb.Clientes> getClientesByDDD(int DDD) {

    Query query = em.createNamedQuery("Clientes.findByDDD");

    query.setParameter("DDD", "(" + DDD + ")%");

    return query.getResultList();

}

Posso estar falando besteira, mas veja a exceção:

Caused by: java.lang.IllegalArgumentException: You have attempted to set a value of type class java.lang.String for parameter donoPrdt with expected type of class ejb.Usuarios from query string SELECT p FROM Produtos p WHERE p.donoPrdt = :donoPrdt.

Vocês está passando um String no parâmetro ‘donoPrdt’, quando deveria passar um objeto “Usuarios”. Não é este o problema?

Olá, boa tarde.

Pelo visto “p.donoPrdt” é um objeto do tipo “ejb.Usuarios” e você está informando um valor “String” como parâmetro, por isto o erro:

"Caused by: java.lang.IllegalArgumentException: You have attempted to set a value of type class java.lang.String for parameter donoPrdt with expected type of class ejb.Usuarios from query string SELECT p FROM Produtos p WHERE p.donoPrdt = :donoPrdt.  "

Tente mudar o valor atribuído a “p.donoPrdt” na query para uma entidade do tipo “ejb.Usuarios” ou faça a query direto no parâmetro; por exemplo “p.donoPrdt.codUser” = a um objeto String:

@Override  
    public List<Produtos> getListaProdutosUsuarioLogado(Usuarios usuario) {  
        Query query = em.createNamedQuery("Produtos.findByDonoPrdt");  
        query.setParameter("donoPrdt", usuario);  
        return query.getResultList();  
    }//getListaProdutosUsuarioLogado  

Abraço,

Valeu Wilson e Rodrigo pela ajuda, resolveu do jeito que vcs falaram.

Agora outra classe esta incomodando, apliquei a logica do objeto e nao deu certo:
http://www.guj.com.br/java/275942-problema-com-auto-incremento-derby–ejb–a-coluna-codg_cmvn-nao-aceita-valor-nulo-#1451406