6 Stimmen

Joda Time und Hibernate 4

Ich verwende Hibernate 4 mit Joda-Time und Spring Data JPA. Spring Data bietet Annotationen an

@CreadedOn
@LastModifiedOn

Ich versuche, diese beiden Annotationen zu verwenden. Nachstehend finden Sie einen Ausschnitt aus meinem POJO

@Entity
@Table(name="restaurant")
@Audited
public class Restaurant {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

private String restaurantName;

@CreatedDate
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime")
 // @Type(type = "org.jadira.usertype.dateandtime.threetenbp.PersistentDateTime")
private DateTime createdOn;

@LastModifiedDate
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime")
 // @Type(type = "org.jadira.usertype.dateandtime.threetenbp.PersistentDateTime")
private DateTime modifiedOn;
}

Gemäß den Anweisungen des Benutzertyps Joda-Time habe ich meine Eigenschaften mit @Type annotiert. Aber leider kein Glück. Jedes Mal, wenn ich die @Type-Annotation verwende und bereitstelle, erhalte ich einen Fehler auf meinem Server

SCHWERWIEGEND: Fehler listenerStart

Die vollständige Stack-Trace finden Sie unten

    Jan 15, 2014 11:40:00 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Bereitstellung des Webanwendungsarchivs G:\apache-tomcat-7.0.47\webapps\base-spr
ing-data-jpa.war
Jan 15, 2014 11:40:00 AM org.apache.catalina.loader.WebappClassLoader validateJa
rFile
INFO: validateJarFile(G:\apache-tomcat-7.0.47\webapps\base-spring-data-jpa\WEB-I
NF\lib\javax.servlet-api-3.1.0.jar) - Jar wurde nicht geladen. Siehe Servlet-Spezifikation 2.3, Absc
hnitt 9.7.2. Problematische Klasse: javax/servlet/Servlet.class
SLF4J: Laden der Klasse "org.slf4j.impl.StaticLoggerBinder" fehlgeschlagen.
SLF4J: Rückfall auf keine-Aktivitätsprotokollgeber-Implementierung (NOP)
SLF4J: Siehe http://www.slf4j.org/codes.html#StaticLoggerBinder für weitere Details
Jan 15, 2014 11:40:05 AM org.hibernate.annotations.common.Version 
INFO: HCANN000001: Hibernate Commons Annotations {4.0.2.Final}
Jan 15, 2014 11:40:05 AM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.2.7.Final}
Jan 15, 2014 11:40:05 AM org.hibernate.cfg.Environment 
INFO: HHH000206: hibernate.properties nicht gefunden
Jan 15, 2014 11:40:05 AM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode-Anbietername: javassist
Jan 15, 2014 11:40:05 AM org.hibernate.ejb.Ejb3Configuration configure
INFO: HHH000204: Verarbeiten von PersistenceUnitInfo [
        Name: Standard
        ...]
Jan 15, 2014 11:40:05 AM org.hibernate.service.jdbc.connections.internal.Connect
ionProviderInitiator instantiateExplicitConnectionProvider
INFO: HHH000130: Expliziten Verbindungsdienstanbieter instanziieren: org.hibernate.ejb.c
onnection.InjectedDataSourceConnectionProvider
Jan 15, 2014 11:40:06 AM org.hibernate.dialect.Dialect 
INFO: HHH000400: Verwendung von Dialekt: org.hibernate.dialect.MySQLDialect
Jan 15, 2014 11:40:06 AM org.apache.catalina.core.StandardContext startInternal
SCHWERWIEGEND: Fehler listenerStart
Jan 15, 2014 11:40:06 AM org.apache.catalina.core.StandardContext startInternal
SCHWERWIEGEND: Kontext [/base-spring-data-jpa] Start fehlgeschlagen aufgrund vorheriger Fehler
Jan 15, 2014 11:40:06 AM org.apache.catalina.loader.WebappClassLoader clearRefer
encesJdbc
SCHWERWIEGEND: Die Webanwendung [/base-spring-data-jpa] hat den JDBC-Treiber [
com.mysql.jdbc.Driver] registriert, aber nicht abgemeldet, als die Webanwendung gestartet wurde
gestoppt. Um ein Memory-Leck zu verhindern, wurde der JDBC-Treiber zwangsweise abgemeldet
Jan 15, 2014 11:40:06 AM org.apache.catalina.loader.WebappClassLoader clearRefer
encesThreads
SCHWERWIEGEND: Die Webanwendung [/base-spring-data-jpa] hat möglicherweise einen Th
read namens [Verwaistes Verbindungsbereinigungsthread] gestartet, aber nicht beendet. Dies
führt höchstwahrscheinlich zu einem Memory-Leck.
Jan 15, 2014 11:40:06 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Bereitstellung des Webanwendungsverzeichnisses G:\apache-tomcat-7.0.47\webapps\docs
Jan 15, 2014 11:40:06 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Bereitstellung des Webanwendungsverzeichnisses G:\apache-tomcat-7.0.47\webapps\exampl
es
Jan 15, 2014 11:40:06 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Bereitstellung des Webanwendungsverzeichnisses G:\apache-tomcat-7.0.47\webapps\host-m
anager
Jan 15, 2014 11:40:07 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Bereitstellung des Webanwendungsverzeichnisses G:\apache-tomcat-7.0.47\webapps\manage
r
Jan 15, 2014 11:40:07 AM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Bereitstellung des Webanwendungsverzeichnisses G:\apache-tomcat-7.0.47\webapps\ROOT
Jan 15, 2014 11:40:07 AM org.apache.coyote.AbstractProtocol start
INFO: Start ProtocolHandler ["http-nio-8080"]
Jan 15, 2014 11:40:07 AM org.apache.coyote.AbstractProtocol start
INFO: Start ProtocolHandler ["ajp-apr-8009"]
Jan 15, 2014 11:40:07 AM org.apache.catalina.startup.Catalina start
INFO: Serverstart in 6648 ms

Seit gestern versuche ich, diese beiden zum Laufen zu bringen, aber leider ohne Erfolg. Kann mir jemand bitte sagen, wie ich dieses Problem lösen kann. Nachstehend finden Sie meine Pom-Abhängigkeiten und Repository

  junit
  junit
  3.8.1
  test

        org.springframework
        spring-core
        ${spring.version}

        org.springframework
        spring-beans
        ${spring.version}

        org.springframework
        spring-context
        3.2.5.RELEASE

        org.springframework
        spring-web
        ${spring.version}

    javax.validation
    validation-api
    1.1.0.Final

    org.hibernate
    hibernate-validator
    5.0.1.Final

    org.hibernate
    hibernate-entitymanager
    4.2.7.Final

    org.hibernate
    hibernate-core
    4.2.7.Final

    mysql
    mysql-connector-java
    5.1.27

    org.springframework.data
    spring-data-jpa
    1.5.0.BUILD-SNAPSHOT

    javax.servlet
    javax.servlet-api
    3.1.0

    jstl
    jstl
    1.2

    org.springframework
    spring-webmvc
    ${spring.version}

    org.springframework
    spring-aspects
    3.2.5.RELEASE

    org.hibernate
    hibernate-envers
    4.2.7.Final

    joda-time
    joda-time
    2.3

        spring-libs-snapshot
        http://repo.spring.io/libs-snapshot

21voto

Jakub Kubrynski Punkte 13124

Sie müssen die @Type-Annotation nicht verwenden. Fügen Sie einfach die folgende JPA-Eigenschaft hinzu:

entityManagerFactory.getJpaPropertyMap().put("jadira.usertype.autoRegisterUserTypes", "true");

Ich denke auch, dass Sie die Jadira-Abhängigkeit verpasst haben:

  org.jadira.usertype
  usertype.core
  3.1.0.CR10

2voto

Vladimir Tagakov Punkte 107

Wenn Sie Gradle und Spring Boot mit annotationbasierter Konfiguration verwenden, können Sie den Ratschlag von @jakub-kubrynski befolgen

build.gradle

dependencies {
    compile 'org.jadira.usertype:usertype.core:3.2.0.GA'
}

application.properties

#Hibernate-Konfiguration
spring.jpa.properties.jadira.usertype.autoRegisterUserTypes=true

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X