2016-04-06 5 views
0

Ich habe Probleme mit Hibernate, JavaEE Persistence und einer eingebetteten H2-Datenbank.Embedded H2 Datenbank Verbindungsfehler - falscher Benutzername und Passwort

Ich habe den folgenden Abschnitt in meinem persistence.xml bekommt:

<persistence-unit name="iot_pu"> 

    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <properties> 

     <property name="hibernate.connection.driver_class" value="org.h2.Driver"/> 
     <property name="hibernate.connection.url" value="jdbc:h2:/tmp/databases/iot;AUTO_SERVER=TRUE;MVCC=true"/> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/> 
     <property name="hibernate.hbm2ddl.auto" value="create"/> 
     <property name="hibernate.show_sql" value="true"/> 

    </properties> 

</persistence-unit> 

ich folgende Stack-Trace erhalten:

javax.persistence.PersistenceException: Unable to build entity manager factory 

     at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:66) 
     at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55) 
     at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39) 
     at iot.utils.AbstractTestSuite.setUpClass(AbstractTestSuite.java:22) 
     at iot.utils.AbstractTestSuite.getEmf(AbstractTestSuite.java:37) 
     at iot.utils.AbstractTest.init 
Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] 
Caused by: org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect 
Caused by: org.h2.jdbc.JdbcSQLException: Falscher Benutzer Name oder Passwort 
Wrong user name or password [28000-191] 
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) 
    at org.h2.message.DbException.get(DbException.java:179) 
    at org.h2.message.DbException.get(DbException.java:155) 
    at org.h2.message.DbException.get(DbException.java:144) 
    at org.h2.engine.Engine.validateUserAndPassword(Engine.java:333) 
    at org.h2.engine.Engine.createSessionAndValidate(Engine.java:161) 
    at org.h2.engine.Engine.createSession(Engine.java:136) 
    at org.h2.engine.Engine.createSession(Engine.java:28) 
    at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:349) 
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:107) 
    at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:91) 
    at org.h2.Driver.connect 

Wenn ich die Verbindung mit IntelliJ testen heißt es, dass die Verbindung funktioniert ohne Probleme - kein Benutzername oder Passwort. enter image description here enter image description here

Die Linie, die das Problem (AbstractTestSuite.java:22)

Persistence.createEntityManagerFactory("iot_pu"); 

sagt verursacht, kann es der Fall sein, dass ich etwas über Maven zu importieren vergessen habe?

......... 
     <dependency> 
      <groupId>com.h2database</groupId> 
      <artifactId>h2</artifactId> 
      <version>1.4.191</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>5.1.0.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>5.1.0.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-validator</artifactId> 
      <version>5.2.4.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate.javax.persistence</groupId> 
      <artifactId>hibernate-jpa-2.0-api</artifactId> 
      <version>1.0.1.Final</version> 
     </dependency> 
......... 
+1

Ich glaube, Sie Benutzername und Passwort in Verbindung url verpasst haben – Jeet

+0

Antwort würde geschätzt https://stackoverflow.com/help/someone -answers – c0der

Antwort

2

Sie fehlen hibernate.connection.username und hibernate.connection.password Eigenschaften in Ihrem persistence.xml, oder Sie können sie direkt in Ihrem Verbindungs-URL (Beispiel: "jdbc:oracle:thin:user/[email protected]:1521:SMIDVINT") einfügen.

+0

Ich habe sie bereits hinzugefügt, aber es ist immer noch der gleiche Fehler. Ich habe auch den Standard-Benutzernamen "sa" ausprobiert ... aber es hat nicht funktioniert – pichlbaer

0

Testen Sie Ihre Verbindung damit sicherstellen, dass Ihre Einstellung richtig ist:

/** 
    * Connect to H2db. 
    * calling example: connect("jdbc:h2:/Resources/databases/dbName", "JohnD", "secret") 
    */ 
    public static Connection connect (String dbPath, String userName, String password) 
        throws ClassNotFoundException, SQLException, JdbcSQLException { 

     Class.forName("org.h2.Driver"); 
     String dbURL= dbPath + ";IGNORECASE=TRUE;MODE=MySQL;IFEXISTS=TRUE"; 

     return DriverManager.getConnection(dbURL,userName,password); 
    } 
Verwandte Themen