[Resolvido] Retorno de data do banco

13 respostas
W

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

13 Respostas

Adelar

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.

W

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,

W

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.

Adelar

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

Att.

Carlos_ds_jar

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.

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

W

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.

Carlos_ds_jar

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.

No banco está como data ou como String?

W

no banco o campo é data

G

ja tentou inserir como calendar?

adriano_si

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” ???

W

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)
G

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

W

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

Criado 11 de agosto de 2010
Ultima resposta 12 de ago. de 2010
Respostas 13
Participantes 5