[quote=nel]Esse método:
public String getTipoUsuario() throws HibernateException, InstantiationException, IllegalAccessException {
return ((TipoUsuario) new TipoUsuarioDAO().findByPk(idTipoUsuario)).getNome();
}
De onde tu pega a variável idTipoUsuario ? Tu não está usando um POJO com um DAO dentro né ?
E está muito pouco detalhado o erro. E tens certeza que a pesquisa é por PK e não está correndo o risco de retornar uma lista?
Posta a exceção completa e um código mais completo também.
Obs: porque não deixo a cargo do seu container web ou AS gerenciar as sesões?[/quote]
Obrigado pela resposta…
Acho que sim :), mas quero primeiro fazer funcionar, depois seguir o padrão correto.
Estou fazendo isso pois por exemplo… eu deixando este método na model assim:
public int getTipoUsuario() {
return idTipoUsuario;
}
Ele retorna no json de dados exatamente o que eu quero:
...,"tipoUsuario":1}...
Ou seja, então teoricamente ao inves de eu retornar o “1” -idTipoUsuario nesse campo, fazer um findByPk e trazer o nome desse tipoUsuario (“Administrador”), parece fazer sentido.
Não entendi muito bem, mas acho que isso já está sendo feito.
[quote]E está muito pouco detalhado o erro. E tens certeza que a pesquisa é por PK e não está correndo o risco de retornar uma lista?
Posta a exceção completa e um código mais completo também.[/quote]
[quote]Set 05, 2012 10:12:52 AM org.apache.catalina.core.StandardWrapperValve invoke
Grave: Servlet.service() for servlet [Teste] in context with path [/Teste] threw exception
org.codehaus.jackson.map.JsonMappingException: org.hibernate.SessionFactory (through reference chain: java.util.HashMap[“rows”]->java.util.ArrayList[0]->com.policenosistemas.model.Usuario[“tipoUsuario”])
at org.codehaus.jackson.map.JsonMappingException.wrapWithPath(JsonMappingException.java:214)
at org.codehaus.jackson.map.JsonMappingException.wrapWithPath(JsonMappingException.java:179)
at org.codehaus.jackson.map.ser.SerializerBase.wrapAndThrow(SerializerBase.java:80)
at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:127)
at org.codehaus.jackson.map.ser.ContainerSerializers$IndexedListSerializer.serialize(ContainerSerializers.java:78)
at org.codehaus.jackson.map.ser.ContainerSerializers$IndexedListSerializer.serialize(ContainerSerializers.java:44)
at org.codehaus.jackson.map.ser.MapSerializer.serializeEntries(MapSerializer.java:131)
at org.codehaus.jackson.map.ser.MapSerializer.serialize(MapSerializer.java:74)
at org.codehaus.jackson.map.ser.MapSerializer.serialize(MapSerializer.java:19)
at org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:260)
at org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java:212)
at org.codehaus.jackson.map.ObjectMapper.writeValue(ObjectMapper.java:694)
at org.springframework.http.converter.json.MappingJacksonHttpMessageConverter.writeInternal(MappingJacksonHttpMessageConverter.java:145)
at org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:181)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.writeWithMessageConverters(AnnotationMethodHandlerAdapter.java:933)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.handleResponseBody(AnnotationMethodHandlerAdapter.java:898)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.getModelAndView(AnnotationMethodHandlerAdapter.java:843)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:423)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.InstantiationException: org.hibernate.SessionFactory
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at com.policenosistemas.dao.AbstractDAO.findByPk(AbstractDAO.java:67)
at com.policenosistemas.model.Usuario.getTipoUsuario(Usuario.java:117)
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.codehaus.jackson.map.ser.BeanPropertyWriter.get(BeanPropertyWriter.java:232)
at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:197)
at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:122)
… 38 more[/quote]
Usuario.java
[code]/**
package com.policenosistemas.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.codehaus.jackson.annotate.JsonAutoDetect;
import org.hibernate.HibernateException;
import com.policenosistemas.dao.TipoUsuarioDAO;
@JsonAutoDetect
@Entity
@Table(name = “usuario”)
public class Usuario {
@Id
@GeneratedValue
@Column(name = "id")
private int id;
@Column(name = "nome", nullable = false)
private String nome;
@Column(name = "data_nascimento", nullable = false)
private String dataNascimento;
@Column(name = "ativo", nullable = false)
private int ativo;
@Column(name = "observacao", nullable = false)
private String observacao;
@Column(name = "foto", nullable = false)
private String foto;
@Column(name = "id_tipo_usuario", nullable = false)
private int idTipoUsuario;
@Column(name = "id_genero", nullable = false)
private int idGenero;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getDataNascimento() {
return dataNascimento;
}
public void setDataNascimento(String dataNascimento) {
this.dataNascimento = dataNascimento;
}
public int getAtivo() {
return ativo;
}
public void setAtivo(int ativo) {
this.ativo = ativo;
}
public String getObservacao() {
return observacao;
}
public void setObservacao(String observacao) {
this.observacao = observacao;
}
public String getFoto() {
return foto;
}
public void setFoto(String foto) {
this.foto = foto;
}
public int getIdGenero() {
return idGenero;
}
public int getIdTipoUsuario() {
return idTipoUsuario;
}
public void setIdGenero(int idGenero) {
this.idGenero = idGenero;
}
public void setIdTipoUsuario(int idTipoUsuario) {
this.idTipoUsuario = idTipoUsuario;
}
public String getTipoUsuario() throws HibernateException, InstantiationException, IllegalAccessException {
return ((TipoUsuario) new TipoUsuarioDAO().findByPk(idTipoUsuario)).getNome();
}
public int getGenero() {
return idGenero;
}
}[/code]
TipoUsuarioDAO.java
[code]/**
- DAO do modulo “TipoUsuario”.
-
- Fabio Jr. Policeno fabiojpoli@hotmail.com
- 29/08/2012
*/
package com.policenosistemas.dao;
import org.springframework.stereotype.Repository;
import com.policenosistemas.model.TipoUsuario;
@Repository
public class TipoUsuarioDAO extends AbstractDAO{
public TipoUsuarioDAO() {
super(TipoUsuario.class);
}
}[/code]
AbstractDAO
[code]package com.policenosistemas.dao;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.commons.lang.StringUtils;
import org.hibernate.HibernateException;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.support.DataAccessUtils;
import org.springframework.orm.hibernate3.HibernateTemplate;
public class AbstractDAO {
protected HibernateTemplate hibernateTemplate;
protected Class<?> classModel;
protected DetachedCriteria criteria;
private JSONArray jFilter;
protected AbstractDAO(Class<?> classModel) {
this.classModel = classModel;
}
@Autowired
public void setSessionFactory(SessionFactory sessionFactory) {
hibernateTemplate = new HibernateTemplate(sessionFactory);
}
...
public Object findByPk(Integer pk) throws HibernateException, InstantiationException, IllegalAccessException{
setSessionFactory(SessionFactory.class.newInstance().openSession().getSessionFactory());
Object record = hibernateTemplate.get(classModel, pk);
return record;
}
…
}
[/code]