問題5私は休止状態-JPA-Mavenを持ついくつかの問題に直面しています
それは私が休止状態JPAを使用して、初めてだと私はいくつかの問題を持っている: を私は持っているデータベースを持っていますJPAで作成したもので、JUnit5でCRUDテストをしたいと思っています。 pom.xmlを使用すると、SQLiteの方言と休止状態で動作する依存関係が追加され、persistence.xmlファイルがあります。 Eclipseを使用してプロジェクトを実行して、最初の簡単なテストが機能していることを確認します。この問題があります。
oct 28、2017 2:42:32 PM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation INFO:HHH000204:処理 PersistenceUnitInfo [name:Bla ...] oct。 28、2017 2:42:32 PM org.hibernate.Version logVersion INFO:HHH000412:Hibernate Core {5.2.12.Final} oct。 28,2207 2:42:32 PM org.hibernate.cfg.Environment INFO:HHH000206:hibernate.propertiesが見つかりませんでした。 28、2017 2:42:32 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager 情報:HCANN000001:休止状態のコモンズ注釈 {5.0.1.Final} oct。 28、2017 2:42:33 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl WARN:HHH10001002:Hibernateビルトイン接続プールを使用する (本番用ではありません! 28、2017 2:42:33 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO:HHH10001005:ドライバ[org.sqlite.JDBC]をURL [jdbc:sqlite :: memory:]で使用しています。 oct。 28、2017 2:42:33 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO:HHH10001001:接続プロパティ:{charSet = UTF-8、 パスワード= ****、ユーザー=テスト} oct。 28、2017 2:42:33 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator INFO:HHH10001003:オートコミットモード:false oct。 28、2017 2:42:33 PM org.hibernate.engine.jdbc.connections.internal.PooledConnections INFO:HHH000115:Hibernate接続プールサイズ:20(最小= 1) oct。 2835:2019 2:42:33 PM org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator initiateService WARN:HHH000342:クエリへの接続を取得できませんでした メタデータ:Dialectを[name = SQLite、 majorVersion = 3];ユーザーはリゾルバを登録するか明示的に設定する必要があります 'hibernate.dialect'スレッド "main"内の例外 org.hibernate.service.spi.ServiceException:要求された サービスを作成できません[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment ]で。 。 。 原因:org.hibernate.HibernateException: へのアクセス 'hibernate.dialect'が設定されていない場合DialectResolutionInfoをnullにすることはできません at。 。 。
はWARN::HHH000342を:メタデータを照会するために、接続を取得できませんでした: 使用する方言を決定することができません[名前だから私は私が私が持っている理由を見つけることを試みる必要があり
... 14以上= SQLite、majorVersion = 3];ユーザー はリゾルバを登録するか、明示的に 'hibernate'を設定する必要があります。方言」
SQLiteの3と5を休止ので、どうやらこれは互換性がありませんので、私はこれ試してみてください。Does Hibernate Fully Support SQLiteをしかし、それは私のために働いていませんでした。
次に、私は休止状態の下位バージョンを取って、pom.xmlで休止状態のバージョンと休止状態のコアバージョンを4.3.11に変更しようとします。最終的には、私の問題は解決しません。
hibernateとSQLiteのバージョンから問題が発生した場合、またはこれがpom.xmlの構成の問題(欠落している依存関係)の場合は、数時間後にはわかりません。それは私のpersistance.xmlです。これは私のクラスTestから来ています。
あなたはより多くの詳細が必要な場合は私に知らせてください。 ご協力いただきありがとうございます。
私のpom.xmlファイル:
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>fr.umlv.orthopro</groupId>
<artifactId>OrthoPro_brain</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>OrthoPro_brain</name>
<url>http://maven.apache.org</url>
<properties>
<java.version>9</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.jupiter.version>5.0.1</junit.jupiter.version>
<junit.platform.version>1.0.1</junit.platform.version>
<hibernate.version>5.2.12.Final</hibernate.version>
<sqlite.version>3.20.1</sqlite.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.0.0-M1</version>
<configuration>
<reportOutputDirectory>${project.build.directory}/javadoc</reportOutputDirectory>
<destDir>javadoc</destDir>
<nohelp>true</nohelp>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-runner</artifactId>
<version>${junit.platform.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>${sqlite.version}</version>
<!-- <scope>test</scope> -->
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
</dependency>
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.jpa</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.2.12.Final</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
</dependencies>
</project>
マイpersistence.xmlファイル:
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">
<persistence-unit name="first_test" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<class>fr.umlv.orthpro.db.User</class>
<class>fr.umlv.orthpro.db.Rule</class>
<class>fr.umlv.orthpro.db.UserRule</class>
<class>fr.umlv.orthpro.db.Sentence</class>
<properties>
<property name="dialect" value="org.hibernate.dialect.SQLiteDialect" />
<property name="javax.persistence.jdbc.driver" value="org.sqlite.JDBC" />
<property name="javax.persistence.jdbc.url" value="jdbc:sqlite::memory:" />
<property name="javax.persistence.jdbc.user" value="test" />
<property name="javax.persistence.jdbc.password" value="test" />
<property name="hibernate.show_sql" value="true" />
<property name="format_sql" value="true" />
<property name="hibernate.connection.charSet" value="UTF-8" />
<property name="hibernate.hbm2ddl.auto" value="create" />
</properties>
</persistence-unit>
</persistence>
これは、データベース上でテストを実行するために私のクラスである:
package fr.umlv.orthopro.db;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class Test {
EntityManagerFactory emfactory = Persistence.createEntityManagerFactory("first_test");
EntityManager entitymanager = emfactory.createEntityManager();
entitymanager.getTransaction().begin();
User quentin = new User();
quentin.setId(1201);
quentin.setAdmin(false);
entitymanager.persist(quentin);
entitymanager.getTransaction().commit();
entitymanager.close();
emfactory.close();
}
}
編集:私は変更する
<property name="dialect" value="org.hibernate.dialect.SQLiteDialect" />
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLiteDialect" />
、今
に私はこれを持っている:
解決することができません名[org.hibernate.dialect.SQLiteDialect] 戦略[org.hibernate.dialect.Dialect]
H2、Derby aka JavaDB、JPQLを持つHSQLDB –
残念ながら私はフレームワークとDBの選択肢がありませんが、SQLiteを使用する必要がありますが、効率的で簡単にJPAで使用するDB – Unconnu
あなたのpersistence.xmlに 'dialect'プロパティがあります。それは 'hibernate.dialect'でなければなりません、それはタイプミスですか? – crizzis