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:
- utiliser le SQLiteDialect classe de Printemps de démarrage et SQLite
- fournir un pilote JDBC; nous avons utilisé
org.xerial:sqlite-jdbc (http://mvnrepository.com/artifact/org.xerial/sqlite-jdbc/3.8.7) - 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:
- supprimer l'inutile
jpa:
base de données: SQLITE
configuration de la pièce ci-dessus, et
- 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.
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
Vous devez vous connecter pour publier un commentaire.
Pour Hibernate appelé stratégie de classe est une fonctionnelle de la mise en œuvre de la
org.hibernate.dialect.Dialect
classe. Pour la plupart des base de données commune, il y a une coupe courte et puis vous pouvez utiliser ledatabase
bien et il suffit de spécifier la base de données (commeORACLE
,DB2
etc.). Cependant, cela n'existe pas pour SQLite, vous devez configurer le dialecte spécifique.Pour spécifier le dialecte, vous pouvez utiliser le
database-platform
propriété et vient de passer le dialecte à utiliser.Cela fonctionne aussi pour tout autre dialecte comme le
org.hibernate.dialect.MySQL5InnoDBDialect
si vous souhaitez spécifier un spécifique pour MySQL (par exemple).OriginalL'auteur M. Deinum