[Resolvido] Retorno de data do banco

Boa Tarde,

Pessoal, tenho uma aplicação que esta gravando uma data no bd, o problema é na hora de buscar esta data, busco o objeto inteiro, mas a data retorna como null.
Banco MySql.
Persistencia com JPA.

alguem tem alguma ideia do que estou fazendo de errado.

Att,
William

O tipo da coluna está de acordo com o tipo de persistência desejada?

Tipos de dados para o javax.persistence.TemporalType:
DATE Map as java.sql.Date
TIME Map as java.sql.Time
TIMESTAMP Map as java.sql.Timestamp
Link: http://download.oracle.com/javaee/5/api/javax/persistence/TemporalType.html

Certeza que os dados não estão sendo gravados como null?

Att.

Adelar,

tenho certeza, pois quando mando inserir os dados, não apresenta erro, verifiquei e estes estao no banco, so na hora de retornar apresenta erro e so a data, outros atributos do objeto, retornam perfeitamente.

att,

Pessoal,

Fiz um novo teste, e percebi que todos os registros inseridos via software não retornam do banco, so retornam os que foram inseridos direto no banco, porem ainda nao consegui entender porque.

Pode ser um problema no mapeamento ou… a conexão como o banco está ok? Ocorre alguma exception quando vai persistir ou recuperar?

Att.

[quote=willCesar]Pessoal,

Fiz um novo teste, e percebi que todos os registros inseridos via software não retornam do banco, so retornam os que foram inseridos direto no banco, porem ainda nao consegui entender porque.[/quote]

Boa noite chapa, posta ai os seus codigos pra a gente poder analisar melhor 8)

A exceção é nullPointException, só há exceção na busca, para persistir os dados corre tudo bem.

segue meu mapeamento da classe

@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) @Column(name = "Codigo", nullable = false) private Integer codigo; @Basic(optional = false) @Column(name = "Fornecedor_Codigo", nullable = false) private int fornecedorCodigo; @Column(name = "ValorTotalNota", precision = 10, scale = 2) private BigDecimal valorTotalNota; @Column(name = "ValorDigitado", precision = 10, scale = 2) private BigDecimal valorDigitado; @Column(name = "Diferenca", precision = 10, scale = 2) private BigDecimal diferenca; @Column(name = "N_NF_Entrada") private Integer nNFEntrada; @Column(name = "DataEmissao") @Temporal(TemporalType.DATE) private Date dataEmissao; @Column(name = "Desc_NF", precision = 10, scale = 2) private BigDecimal descNF; @Column(name = "Validada") private Character validada; @Column(name = "N_ID_forn", length = 155) private String nIDforn; @Column(name = "DataCadastro") @Temporal(TemporalType.DATE) private Date dataCadastro;

consulta no banco

public List<Lancamercadoria> validadas(String validada) { String sql = "select * from lancamercadoria where lancamercadoria.Validada = 'N'"; Query q = em.createNativeQuery(sql, Lancamercadoria.class); List<Lancamercadoria> result = q.getResultList(); return result; }

tambem tentei com o metodo findAll(), que é implementado pelo JPA mesmo, porém retorno como null este campo tambem.

[quote=willCesar]A exceção é nullPointException, só há exceção na busca, para persistir os dados corre tudo bem.

segue meu mapeamento da classe

@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) @Column(name = "Codigo", nullable = false) private Integer codigo; @Basic(optional = false) @Column(name = "Fornecedor_Codigo", nullable = false) private int fornecedorCodigo; @Column(name = "ValorTotalNota", precision = 10, scale = 2) private BigDecimal valorTotalNota; @Column(name = "ValorDigitado", precision = 10, scale = 2) private BigDecimal valorDigitado; @Column(name = "Diferenca", precision = 10, scale = 2) private BigDecimal diferenca; @Column(name = "N_NF_Entrada") private Integer nNFEntrada; @Column(name = "DataEmissao") @Temporal(TemporalType.DATE) private Date dataEmissao; @Column(name = "Desc_NF", precision = 10, scale = 2) private BigDecimal descNF; @Column(name = "Validada") private Character validada; @Column(name = "N_ID_forn", length = 155) private String nIDforn; @Column(name = "DataCadastro") @Temporal(TemporalType.DATE) private Date dataCadastro;

consulta no banco

public List<Lancamercadoria> validadas(String validada) { String sql = "select * from lancamercadoria where lancamercadoria.Validada = 'N'"; Query q = em.createNativeQuery(sql, Lancamercadoria.class); List<Lancamercadoria> result = q.getResultList(); return result; }

tambem tentei com o metodo findAll(), que é implementado pelo JPA mesmo, porém retorno como null este campo tambem.

[/quote]

No banco está como data ou como String?

no banco o campo é data

ja tentou inserir como calendar?

Cara… pega o log do erro e posta aqui pra gente… um null pointer pode ser em varios lugares…

[EDIT] - da onde vem o teu “em” ???

o em vem de EntityManager

12/08/2010 13:26:35 com.sun.enterprise.transaction.JavaEETransactionManagerSimplified initDelegates
INFO: Using com.sun.enterprise.transaction.jts.JavaEETransactionManagerJTSDelegate as the delegate
Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at java.util.Calendar.setTime(Calendar.java:1075)
at java.text.SimpleDateFormat.format(SimpleDateFormat.java:876)
at java.text.SimpleDateFormat.format(SimpleDateFormat.java:869)
at java.text.DateFormat.format(DateFormat.java:316)
at com.linear.linearPDV.tabelas.ValidaNFTableModel.formatData(ValidaNFTableModel.java:28)
at com.linear.linearPDV.tabelas.ValidaNFTableModel.getValueAt(ValidaNFTableModel.java:81)
at javax.swing.JTable.getValueAt(JTable.java:2695)
at javax.swing.JTable.prepareRenderer(JTable.java:5712)
at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2075)
at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1977)
at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1773)
at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143)
at javax.swing.JComponent.paintComponent(JComponent.java:763)
at javax.swing.JComponent.paint(JComponent.java:1029)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1038)
at javax.swing.JViewport.paint(JViewport.java:747)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1038)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1038)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paint(JComponent.java:1038)
at javax.swing.JLayeredPane.paint(JLayeredPane.java:567)
at javax.swing.JComponent.paintChildren(JComponent.java:864)
at javax.swing.JComponent.paintToOffscreen(JComponent.java:5131)
at javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:278)
at javax.swing.RepaintManager.paint(RepaintManager.java:1220)
at javax.swing.JComponent.paint(JComponent.java:1015)
at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:21)
at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60)
at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97)
at java.awt.Container.paint(Container.java:1780)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:714)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:694)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:128)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
CONSTRUÍDO COM SUCESSO (tempo total: 1 minuto 8 segundos)

viu c tem q da um simpleDateFormat ai cara a data vc faz uma classe util pra formatar a data e passar pro seu banco dai voce busca essa data com esse formato que vai funfa

pessoal,

foi um erro de logica, em um ponto do programa estava fazendo update do objeto, porém a data alterava o tipo e tinha este erro, update corrigido para gravar correto e soft OK.

Agradeco pela colaboração de todos.

Att,
Will