Les étapes qui permettent SQLite avec Spring-Boot et JPA?

Pour exécuter SQLite avec une source de démarrage (Version 1.2.3.COMMUNIQUÉ) de l'application, j'ai fait ces trois étapes:

  1. utiliser le SQLiteDialect classe de Printemps de démarrage et SQLite
  2. fournir un pilote JDBC; nous avons utilisé
    org.xerial:sqlite-jdbc (http://mvnrepository.com/artifact/org.xerial/sqlite-jdbc/3.8.7)
  3. configurez la source de données; ici avec une source de démarrage .fichier yml:
       spring:
      datasource:
        url: jdbc:sqlite:<full-path-to-file>.db
        username: ...
        password: ...
        driverClassName: org.sqlite.JDBC
        ...
      jpa:
        database: SQLITE
        dialect: that.custom.SQLiteDialect
        hibernate:
          ddl-auto: update

Maintenant, ce n'est pas suffisant. Il se termine par un "Non constante enum org.springframework.orm.jpa.le fournisseur.La base de données.SQLITE" erreur:

Field error in object 'spring.jpa' on field 'database': rejected value [SQLITE]; codes [typeMismatch.spring.jpa.database,typeMismatch.database,typeMismatch.org.springframework.orm.jpa.vendor.Database,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [spring.jpa.database,database]; arguments []; default message [database]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'org.springframework.orm.jpa.vendor.Database' for property 'database'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type org.springframework.orm.jpa.vendor.Database for value 'SQLITE'; nested exception is java.lang.IllegalArgumentException: No enum constant org.springframework.orm.jpa.vendor.Database.SQLITE]

En effet, le org.springframework.orm.jpa.le fournisseur.Base de données classe n'a pas de SQLITE valeur, malheureusement.
Toutefois, le printemps doc (http://docs.spring.io/spring-framework/docs/2.5.6/api/org/springframework/orm/jpa/vendor/Database.html) membres:

Si un PersistenceProvider prend en charge une base de données non énumérés ici, la stratégie de la classe peut toujours être spécifié à l'aide de l'complet de la classe nom.

Qu'on dirait que j'ai:

  1. supprimer l'inutile

    jpa:
    base de données: SQLITE

configuration de la pièce ci-dessus, et

  1. Fournir quelques "stratégie de classe" à la place.

Suis-je sur la bonne voie ici ?

Que signifient-ils avec la stratégie "classe" et la façon de les obtenir ou de les mettre en œuvre ?

Mise à JOUR

Solution: Selon le commentaire de M. Deinum, le droit de configuration du lit:

       spring:
      datasource:
        url: jdbc:sqlite:<full-path-to-file>.db
        username: ...
        password: ...
        driverClassName: org.sqlite.JDBC
        ...
      jpa:
        database-platform: that.custom.SQLiteDialect
        hibernate:
          ddl-auto: update

Semble pas "de la stratégie de la classe" doit être mis en œuvre.
Je l'ai maintenant: La supprimé jpa: database: SQLITE ligne (qui correspond à celui org.springframework.orm.jpa.le fournisseur.Base de données classe) n'est pas obligatoire du tout. C'est pratique, -- pour la plupart des bases de données SQLite.

Remarque: Lors de l'utilisation d'Hibernate, que database-platform=... entrée est comme hibernate.dialect=that.custom.SQLiteDialect dans Hibernate configuration spécifique, qui aurait le même effet.

renommer dialect à database-platform et redémarrer.
Suite à votre suggestion (et le retrait jpa:DATABASE:SQLITE ) résolu qu'en effet ! Grand, qui devrait finalement être une réponse ?

OriginalL'auteur shful | 2015-04-16