Boa tarde galera…
Enfim, vou direto ao assunto,
Tenho um webservice que é um Stateles (obvio) session bean que controla algumas entidades.
Tenho um main de teste pra esse webservice e quando tento retornar um objeto que faço na pesquisa pelo método find (do EntityManager) e por criteria ele NUNCA me retorna o objeto, apenas uma exception ingrata:
Couldn't create SOAP message due to exception: XML reader error: com.sun.xml.stream.XMLStreamException2: ParseError at [row,col]:[1,1]
Message: Premature end of file.
Isso quando eu passo como parâmetro um id que existe, justamente pra que eu consiga obter um objeto.
Já quando eu passo um id que não existe na tabela ele não lança exception, me retornando (logicamente) null.
O código de pesquisa está assim:
[code]@WebMethod
// public List pesquisar(int park_id) throws Exception {
public Park pesquisar(int park_id) throws Exception {
try {
HibernateEntityManager hibernate = (HibernateEntityManager) em;
Session session = hibernate.getSession();
Criteria criteria = session.createCriteria(Park.class);
if (park_id > 0) {
criteria.add(Restrictions.eq("id", park_id));
}
return ((Park) criteria.uniqueResult());
// return (criteria.list());
} catch (Exception e) {
throw new Exception("WS Pesquisar: " + e.getMessage());
}
}[/code]
Ta com criteria pq não tava funcionando nem um simples:
@PersistenceContext
EntityManager em;
...
return em.find(Park.class,park_id);
Enfim, vale lembrar que se eu chamar esse método de dentro de outros métodos do webservice ele funciona perfeitamente.
Creio que seja necessário eu “dar um detached” na entidade que me eh retornada pra que eu possa envia-lo através do WebService, como posso fazer isso?
Abraços!
edit: correção ortográfica.