Trying to connect to Derby Database using OpenJPA in a Maven project, but getting a "java.sql.SQLException" error. -
so did sudo apt-get install sun-javadb-client sun-javadb-core. added javadb/bin path , exported derby_home. created database doing connect 'jdbc:derby:/home/ijk/mydbtest;create=true'; using ij. i used tutorial first part. dblook gives
ijk@ubuntuvm:~$ dblook -d 'jdbc:derby:/home/ijk/mydbtest' -- timestamp: 2014-06-27 18:32:11.933 -- source database is: /home/ijk/mydbtest -- connection url is: jdbc:derby:/home/ijk/mydbtest -- appendlogs: false now have maven project following 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>com.groupdo</groupid> <artifactid>server</artifactid> <version>0.0.1-snapshot</version> <packaging>jar</packaging> <name>server</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceencoding>utf-8</project.build.sourceencoding> </properties> <dependencies> <dependency> <groupid>junit</groupid> <artifactid>junit</artifactid> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupid>org.apache.openjpa</groupid> <artifactid>openjpa-all</artifactid> <version>2.3.0</version> </dependency> <dependency> <groupid>org.apache.derby</groupid> <artifactid>derbyclient</artifactid> <version>10.10.2.0</version> </dependency> </dependencies> here 1 entity class trying work with:
package com.groupdo.models; import javax.persistence.*; import java.io.serializable; import java.util.date; @entity(name = "user") public class user implements serializable{ @id @column(name = "username", nullable = false) private string username; @column(name = "password", nullable = false) private string password; public string getusername() { return username; } public void setusername(string username) { this.username = username; } public string getpassword() { return password; } public void setpassword(string password) { this.password = password; } } here persistence.xml
<?xml version="1.0"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0"> <persistence-unit name="testjpa" transaction-type="resource_local"> <provider> org.apache.openjpa.persistence.persistenceproviderimpl </provider> <class>entity.user</class> <properties> <property name="openjpa.connectionurl" value="jdbc:derby:/home/ijk/mydbtest;create=true" /> <property name="openjpa.connectiondrivername" value="org.apache.derby.jdbc.clientdriver" /> <property name="openjpa.connectionusername" value="admin" /> <property name="openjpa.connectionpassword" value="admin" /> <property name="openjpa.log" value="sql=trace" /> </properties> </persistence-unit> </persistence> and here class trying test set with:
package com.groupdo.server; import javax.persistence.entitymanager; import javax.persistence.entitymanagerfactory; import javax.persistence.entitytransaction; import javax.persistence.persistence; import com.groupdo.models.user; public class test { public static void main(string[] args) { entitymanagerfactory entitymanagerfactory = persistence.createentitymanagerfactory("testjpa"); entitymanager em = entitymanagerfactory.createentitymanager(); entitytransaction usertransaction = em.gettransaction(); usertransaction.begin(); user user = new user(); user.setusername("alex"); user.setpassword("pass"); em.persist(user); usertransaction.commit(); em.close(); entitymanagerfactory.close(); } } i getting following stack trace , don't know what's wrong:
503 testjpa info [main] openjpa.runtime - openjpa dynamically loaded class enhancer. classes not enhanced @ build time enhanced when loaded jvm. slf4j: failed load class "org.slf4j.impl.staticloggerbinder". slf4j: defaulting no-operation (nop) logger implementation slf4j: see http://www.slf4j.org/codes.html#staticloggerbinder further details. 659 testjpa info [main] openjpa.runtime - openjpa dynamically loaded validation provider. 686 testjpa info [main] openjpa.runtime - starting openjpa 2.3.0 722 testjpa info [main] openjpa.jdbc.jdbc - using dictionary class "org.apache.openjpa.jdbc.sql.derbydictionary". exception in thread "main" <openjpa-2.3.0-r422266:1540826 nonfatal general error> org.apache.openjpa.persistence.persistenceexception: there errors initializing configuration: <openjpa-2.3.0-r422266:1540826 fatal user error> org.apache.openjpa.util.userexception: connection not obtained driver class "org.apache.derby.jdbc.clientdriver" , url "jdbc:derby:/home/ijk/mydbtest;create=true". may have specified invalid url. @ org.apache.openjpa.jdbc.schema.datasourcefactory.newconnectexception(datasourcefactory.java:255) @ org.apache.openjpa.jdbc.schema.datasourcefactory.installdbdictionary(datasourcefactory.java:241) @ org.apache.openjpa.jdbc.conf.jdbcconfigurationimpl.getconnectionfactory(jdbcconfigurationimpl.java:733) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:606) @ org.apache.openjpa.lib.conf.configurationimpl.instantiateall(configurationimpl.java:310) @ org.apache.openjpa.conf.openjpaconfigurationimpl.instantiateall(openjpaconfigurationimpl.java:1670) @ org.apache.openjpa.kernel.abstractbrokerfactory.makereadonly(abstractbrokerfactory.java:651) @ org.apache.openjpa.kernel.abstractbrokerfactory.newbroker(abstractbrokerfactory.java:203) @ org.apache.openjpa.kernel.delegatingbrokerfactory.newbroker(delegatingbrokerfactory.java:155) @ org.apache.openjpa.persistence.entitymanagerfactoryimpl.createentitymanager(entitymanagerfactoryimpl.java:226) @ org.apache.openjpa.persistence.entitymanagerfactoryimpl.createentitymanager(entitymanagerfactoryimpl.java:153) @ org.apache.openjpa.persistence.entitymanagerfactoryimpl.createentitymanager(entitymanagerfactoryimpl.java:59) @ com.groupdo.server.test.main(test.java:14) caused by: org.apache.commons.dbcp.sqlnestedexception: cannot create jdbc driver of class 'org.apache.derby.jdbc.clientdriver' connect url 'jdbc:derby:/home/ijk/mydbtest;create=true' @ org.apache.commons.dbcp.basicdatasource.createconnectionfactory(basicdatasource.java:1452) @ org.apache.commons.dbcp.basicdatasource.createdatasource(basicdatasource.java:1371) @ org.apache.commons.dbcp.basicdatasource.getconnection(basicdatasource.java:1044) @ org.apache.openjpa.jdbc.schema.dbcpdriverdatasource.getdbcpconnection(dbcpdriverdatasource.java:74) @ org.apache.openjpa.jdbc.schema.autodriverdatasource.getconnection(autodriverdatasource.java:42) @ org.apache.openjpa.jdbc.schema.simpledriverdatasource.getconnection(simpledriverdatasource.java:76) @ org.apache.openjpa.lib.jdbc.delegatingdatasource.getconnection(delegatingdatasource.java:118) @ org.apache.openjpa.lib.jdbc.decoratingdatasource.getconnection(decoratingdatasource.java:93) @ org.apache.openjpa.jdbc.schema.datasourcefactory.installdbdictionary(datasourcefactory.java:233) ... 14 more caused by: java.sql.sqlexception: no suitable driver @ java.sql.drivermanager.getdriver(drivermanager.java:278) @ org.apache.commons.dbcp.basicdatasource.createconnectionfactory(basicdatasource.java:1437) ... 22 more @ org.apache.openjpa.kernel.abstractbrokerfactory.newbroker(abstractbrokerfactory.java:218) @ org.apache.openjpa.kernel.delegatingbrokerfactory.newbroker(delegatingbrokerfactory.java:155) @ org.apache.openjpa.persistence.entitymanagerfactoryimpl.createentitymanager(entitymanagerfactoryimpl.java:226) @ org.apache.openjpa.persistence.entitymanagerfactoryimpl.createentitymanager(entitymanagerfactoryimpl.java:153) @ org.apache.openjpa.persistence.entitymanagerfactoryimpl.createentitymanager(entitymanagerfactoryimpl.java:59) @ com.groupdo.server.test.main(test.java:14) caused by: java.lang.runtimeexception: there errors initializing configuration: <openjpa-2.3.0-r422266:1540826 fatal user error> org.apache.openjpa.util.userexception: connection not obtained driver class "org.apache.derby.jdbc.clientdriver" , url "jdbc:derby:/home/ijk/mydbtest;create=true". may have specified invalid url. @ org.apache.openjpa.jdbc.schema.datasourcefactory.newconnectexception(datasourcefactory.java:255) @ org.apache.openjpa.jdbc.schema.datasourcefactory.installdbdictionary(datasourcefactory.java:241) @ org.apache.openjpa.jdbc.conf.jdbcconfigurationimpl.getconnectionfactory(jdbcconfigurationimpl.java:733) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:57) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:606) @ org.apache.openjpa.lib.conf.configurationimpl.instantiateall(configurationimpl.java:310) @ org.apache.openjpa.conf.openjpaconfigurationimpl.instantiateall(openjpaconfigurationimpl.java:1670) @ org.apache.openjpa.kernel.abstractbrokerfactory.makereadonly(abstractbrokerfactory.java:651) @ org.apache.openjpa.kernel.abstractbrokerfactory.newbroker(abstractbrokerfactory.java:203) @ org.apache.openjpa.kernel.delegatingbrokerfactory.newbroker(delegatingbrokerfactory.java:155) @ org.apache.openjpa.persistence.entitymanagerfactoryimpl.createentitymanager(entitymanagerfactoryimpl.java:226) @ org.apache.openjpa.persistence.entitymanagerfactoryimpl.createentitymanager(entitymanagerfactoryimpl.java:153) @ org.apache.openjpa.persistence.entitymanagerfactoryimpl.createentitymanager(entitymanagerfactoryimpl.java:59) @ com.groupdo.server.test.main(test.java:14) caused by: org.apache.commons.dbcp.sqlnestedexception: cannot create jdbc driver of class 'org.apache.derby.jdbc.clientdriver' connect url 'jdbc:derby:/home/ijk/mydbtest;create=true' @ org.apache.commons.dbcp.basicdatasource.createconnectionfactory(basicdatasource.java:1452) @ org.apache.commons.dbcp.basicdatasource.createdatasource(basicdatasource.java:1371) @ org.apache.commons.dbcp.basicdatasource.getconnection(basicdatasource.java:1044) @ org.apache.openjpa.jdbc.schema.dbcpdriverdatasource.getdbcpconnection(dbcpdriverdatasource.java:74) @ org.apache.openjpa.jdbc.schema.autodriverdatasource.getconnection(autodriverdatasource.java:42) @ org.apache.openjpa.jdbc.schema.simpledriverdatasource.getconnection(simpledriverdatasource.java:76) @ org.apache.openjpa.lib.jdbc.delegatingdatasource.getconnection(delegatingdatasource.java:118) @ org.apache.openjpa.lib.jdbc.decoratingdatasource.getconnection(decoratingdatasource.java:93) @ org.apache.openjpa.jdbc.schema.datasourcefactory.installdbdictionary(datasourcefactory.java:233) ... 14 more caused by: java.sql.sqlexception: no suitable driver @ java.sql.drivermanager.getdriver(drivermanager.java:278) @ org.apache.commons.dbcp.basicdatasource.createconnectionfactory(basicdatasource.java:1437) ... 22 more @ org.apache.openjpa.lib.conf.configurationimpl.instantiateall(configurationimpl.java:324) @ org.apache.openjpa.conf.openjpaconfigurationimpl.instantiateall(openjpaconfigurationimpl.java:1670) @ org.apache.openjpa.kernel.abstractbrokerfactory.makereadonly(abstractbrokerfactory.java:651) @ org.apache.openjpa.kernel.abstractbrokerfactory.newbroker(abstractbrokerfactory.java:203) ... 5 more
i changed <property name="openjpa.connectiondrivername" value="org.apache.derby.jdbc.clientdriver" /> <property name="openjpa.connectiondrivername" value="org.apache.derby.jdbc.embeddeddriver" /> (and corresponding maven dependency) , got past problem onto new problem (of entity enhancement).
Comments
Post a Comment