Javafree
Página Inicial do Fórum > Frameworks, APIs e IDE's

[Resolvido]Problema JPA/Hibernate + Joda Time



Criar novo tópico   Responder tópico
  1. Comment Arrow

    Publicado em: 09/04/2013 09:05:34

    Bom dia Pessoal!!!

    Eu sou iniciante no uso tanto do Hibernate como do Joda Time. Tenho uma classe Usuario, nela defini o atributo ultimoAcesso como org.joda.time.DateTime e coloquei a anotação @Type(type = "org.joda.time.contrib.hibernate.PersistentDateTime". No meu persistence.xml ja defini minha persistence-unit. Fiz um teste criando uma EntityManagerFactory e tudo funcionou, ele criou a tabela no meu banco certinho(estou usando MySQL). Porém, agora estou tentando buscar um objeto através da minha chave primária usando o método find mas estou recebendo o seguinte erro:

    Exception in Application start method
    Exception in thread "main" java.lang.RuntimeException: Exception in Application start method
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:403)
    at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47)
    at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115)
    at java.lang.Thread.run(Unknown Source)
    Caused by: java.lang.AbstractMethodError: org.joda.time.contrib.hibernate.PersistentDateTime.nullSafeGet(Ljava/sql/ResultSet;[Ljava/lang/String;Lorg/hibernate/engine/spi/SessionImplementor;Ljava/lang/ObjectLjava/lang/Object;
    at org.hibernate.type.CustomType.nullSafeGet(CustomType.java:127)
    at org.hibernate.type.AbstractType.hydrate(AbstractType.java:106)
    at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2903)
    at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:166
    at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1600)
    at org.hibernate.loader.Loader.getRow(Loader.java:1500)
    at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:712)
    at org.hibernate.loader.Loader.processResultSet(Loader.java:940)
    at org.hibernate.loader.Loader.doQuery(Loader.java:910)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:311)
    at org.hibernate.loader.Loader.loadEntity(Loader.java:2111)
    at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:82)
    at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:72)
    at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3917)
    at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:460)
    at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:429)
    at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:206)
    at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:262)
    at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:150)
    at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1077)
    at org.hibernate.internal.SessionImpl.access$2000(SessionImpl.java:173)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2429)
    at org.hibernate.internal.SessionImpl.get(SessionImpl.java:973)
    at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:807)
    at org.hibernate.ejb.AbstractEntityManagerImpl.find(AbstractEntityManagerImpl.java:781)
    at br.com.sicoobcredinor.sascfx.dao.UsuarioDao.getUsuario(UsuarioDao.java:26)
    at br.com.sicoobcredinor.sascfx.SascFx.start(SascFx.java:192)
    at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:319)
    at com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:215)
    at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:179)
    at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:176)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:176)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.access$100(WinApplication.java:29)
    at com.sun.glass.ui.win.WinApplication$3$1.run(WinApplication.java:73)
    ... 1 more

    Abaixo segue minha classe Usuario:


    _________________

    Samuel



  1. ms27817
    Posts:1052


    Comment Arrow

    Publicado em: 09/04/2013 23:07:45

    Nossa, nunca tentei usar o JodaTime com o Hibernate. Vou dar uma pesquisada sobre isso.
    _________________

    Marcelo Senaga
    Papel: Moderador
    Scala Developer

    http://www.devmedia.com.br/senaga

  1. Comment Arrow

    Publicado em: 10/04/2013 08:31:56

    Encontrei uma solução! Não sei se eh a ideal, mas enquanto não encontrar outra... e fica ai a solução pra quem estiver passando por problema parecido. Eu estava usando o joda-time-hibernate-1.3.jar para fazer as anotações dos meus atributos do tipo Joda Time, e usava a anotação:

    Esta foi a maneira que encontrei diversas pessoas da comunidade usando, porém comigo não estava funcionando, talvez seja devido a versão do hibernate que estou usando (4.2.0), mas não encontrei nada q me confirmasse isso. Bem, pesquisando encontrei o usertype.jodatime-2.0.1.jar e com ele passei a usar a anotação:

    Está funcionando, pelo menos por enquanto.
    Mas se alguém souber o real motivo da exception que estava sendo lançada e/ou uma solução mais adequada para o meu problema continuo no aguardo!
    _________________

    Samuel



  1. davi.costa
    Posts:2520


    Comment Arrow

    Publicado em: 10/04/2013 08:48:09

    Show de bola Samuel, excelente postar sua solução. Acredito que mudar versão de lib não seja muito problema não, se casou com a versão do seu hibernate é só testar se não vai quebrar alguma outra coisa

    abcs
    _________________

    att Davi Costa
    Analista/Arquiteto Java
    Especialista em Engenharia de Sistemas
    ScrumMaster Certified



  1. ms27817
    Posts:1052


    Comment Arrow

    Publicado em: 10/04/2013 23:24:34

    [quote="samuelcguimaraes"]Encontrei uma solução! Não sei se eh a ideal, mas enquanto não encontrar outra... e fica ai a solução pra quem estiver passando por problema parecido. Eu estava usando o joda-time-hibernate-1.3.jar para fazer as anotações dos meus atributos do tipo Joda Time, e usava a anotação:

    Esta foi a maneira que encontrei diversas pessoas da comunidade usando, porém comigo não estava funcionando, talvez seja devido a versão do hibernate que estou usando (4.2.0), mas não encontrei nada q me confirmasse isso. Bem, pesquisando encontrei o usertype.jodatime-2.0.1.jar e com ele passei a usar a anotação:

    Está funcionando, pelo menos por enquanto.
    Mas se alguém souber o real motivo da exception que estava sendo lançada e/ou uma solução mais adequada para o meu problema continuo no aguardo!



    Obrigado por postar a solução. Será util para outros que tiverem a mesma dúvida.

    _________________

    Marcelo Senaga
    Papel: Moderador
    Scala Developer

    http://www.devmedia.com.br/senaga



  1. krismorte
    Posts:382


    Comment Arrow

    Publicado em: 31/03/2015 22:51:23

    Cara você poderia mostrar seu arquivo persistence.xml

    Estou enfrentando esse mesmo problema, mas no meu caso não existe o arquivo hibernate.cfg.xml
    _________________

    Krisnamourt da Silva Correia Filho
    MCITP - SQL Server 2005



  1. Relacionados