Eclipse & JPA & Hibernate & Derby

lumo

Top Contributor
Hallo,

ich habe ein kleines programm geschrieben, das mir eine derby datenbank erzeugt:
Java:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class CreateDatabase {
	private static String dbURL = "jdbc:derby:storage;create=true;user=lumo;password=topsecret";
	private static String createDB = "CREATE SCHEMA storage";

	
	@SuppressWarnings("unused")
	public static void main(String[] args) {
		try {
			Connection conn = getConnection();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	
	public static Connection getConnection() throws SQLException {
		try {
			Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	    Connection conn = DriverManager.getConnection(dbURL);
	    conn.createStatement().execute(createDB);
	    System.out.println("Connected to database ");
	    return conn;
	  }
}

klappt bestens, er erstellt meine datenbank!

nun möchte ich JPA & hibernate so configurieren, dass er auf diese datenbank zugreift...
nur bekomm ich's nicht hin, er schreibt mir immer dass es die db nicht gibt...
Java:
java.sql.SQLException: Database 'storage' not found.
	at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.handleDBNotFound(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection40.<init>(Unknown Source)
	at org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Unknown Source)
	at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
	at org.apache.derby.jdbc.EmbeddedDriver.connect(Unknown Source)
	at org.eclipse.datatools.connectivity.drivers.jdbc.JDBCConnection.createConnection(JDBCConnection.java:213)
	at org.eclipse.datatools.connectivity.DriverConnectionBase.internalCreateConnection(DriverConnectionBase.java:105)
	at org.eclipse.datatools.connectivity.DriverConnectionBase.open(DriverConnectionBase.java:54)
	at org.eclipse.datatools.connectivity.drivers.jdbc.JDBCConnection.open(JDBCConnection.java:73)
	at org.eclipse.datatools.connectivity.drivers.jdbc.JDBCConnectionFactory.createConnection(JDBCConnectionFactory.java:53)
	at org.eclipse.datatools.connectivity.internal.ConnectionFactoryProvider.createConnection(ConnectionFactoryProvider.java:83)
	at org.eclipse.datatools.connectivity.internal.ConnectionProfile.createConnection(ConnectionProfile.java:358)
	at org.eclipse.datatools.connectivity.ui.PingJob.createTestConnection(PingJob.java:76)
	at org.eclipse.datatools.connectivity.ui.PingJob.run(PingJob.java:59)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.sql.SQLException: Database 'storage' not found.
	at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)
	... 22 more

toll, wenn man schon beim configurieren scheitert 😉
 

Anhänge

  • derby1.png
    derby1.png
    45,1 KB · Aufrufe: 46
  • derby2.png
    derby2.png
    31,5 KB · Aufrufe: 35
Ich weiß nicht genau was dein Problem ist, aber wenn du eine EclipseRCP Standalone anfertigen willst würde ich anstatt Hibernate -->EclipseLink verwenden,da EclipseLink OSGi fähig ist.
 
hab hibernate genommen, da ich hibernate schon in einem anderen projekt verwendet habe...
ich bin mir nicht mal sicher ob das problem von hibernate her kommt oder obs sonstwas ist.

die Connection muss ich bei EclipseLink auch configurieren, schätze ich mal...

werd mir aber EclipseLink mal ansehen...

EDIT: zu MySQL bekomm ich einfach eine verbindung...
 
hab hibernate genommen, da ich hibernate schon in einem anderen projekt verwendet habe...
ich bin mir nicht mal sicher ob das problem von hibernate her kommt oder obs sonstwas ist.

die Connection muss ich bei EclipseLink auch configurieren, schätze ich mal...

werd mir aber EclipseLink mal ansehen...

EDIT: zu MySQL bekomm ich einfach eine verbindung...

Hab ja geschrieben, dass nicht weiß was dein Problem ist, kann natürlich auch bei EclipseLink auftreten.

Das war nur ein allgemeiner Tip, dass Hibernate nur bedingt OSGi fähig ist und das bei einem Standalone RCP Probleme machen kann.

Aber ich hab die Connection bei EclipseLink immer in der PU mit XML generiert und das hat für die Derby problemlos funktioniert.

JPA 2.0 with EclipseLink - Tutorial

Und bei Hibernate die gibts es auch eine Connection xml Datei, über die du deine Connection angeben kannst.
 
Wo hast du denn JPA und Hibernate konfiguriert?

Nach deinem Stacktrace zufolge versuchst du via dem Eclipse DB Tool auf deine DB zuzugreifen.
Das Funktioniert auch, aber du musst einen absoluten Pfad angeben. Das DB Tool sucht deine DB relativ zum Eclipse installationspfad.

Einen relativen Pfad kannst du nur innerhalb deines Projekts verwenden (aus dem Code). Wie sich Hibernate diesbezueglich verhaelt weiss ich nicht, sollte aber die DB auch relativ zum Projektpfad suchen.
 
@tagetieb du hattest recht, ich muss dort den absoluten pfad angeben, auch wenns mir nicht gefällt 😉

Danke!
 

Neue Themen


Zurück
Oben