Florin Jurcovici created OPENJPA-2779:
-----------------------------------------
Summary: ReverseMappingTool doesn't load persistence.xml
Key: OPENJPA-2779
URL: https://issues.apache.org/jira/browse/OPENJPA-2779
Project: OpenJPA
Issue Type: Bug
Components: jdbc
Affects Versions: 3.0.0
Environment: $uname -a
Linux vasile 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux
$ java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-2~deb9u1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
Reporter: Florin Jurcovici
Steps to reproduce:
# download the openjpa zip for version 3.0.0, decompress it into a directory
# download the mariadb jdbc driver into the same directory
# in the same directory, create a subdirectory META-INF, then create a
hibernate.xml file, based on the model from [this
page|https://openjpa.apache.org/builds/3.0.0/apache-openjpa/docs/jpa_overview_persistence.html]
# create another directory, named src, inside the directory where the jars are
# replace the database url, driver name, username and password with values
specific to local setup
# run this command:
{code}java -cp ./:mariadb-java-client-2.4.0.jar:openjpa-all-3.0.0.jar
org.apache.openjpa.jdbc.meta.ReverseMappingTool -pkg entities -d ./src{code}
Expected: for each table in the database appearing in the url, an entity class
is generated inside the entities package.
Actual: a stack trace is printed to stdout:
{code}9 INFO [main] openjpa.Tool - The reverse mapping tool will run on the
database. The tool is gathering schema information; this process may take some
time. Enable the org.apache.openjpa.jdbc.Schema logging category to see
messages about schema data.
Exception in thread "main" <openjpa-3.0.0-r422266:1833209 fatal user error>
org.apache.openjpa.util.UserException: The persistence provider is attempting
to use properties in the persistence.xml file to resolve the data source. A
Java Database Connectivity (JDBC) driver or data source class name must be
specified in the openjpa.ConnectionDriverName or javax.persistence.jdbc.driver
property. The following properties are available in the configuration:
"org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl@f248234b".
at
org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:71)
at
org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:850)
at
org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getConnectionFactory(JDBCConfigurationImpl.java:733)
at
org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDataSource(JDBCConfigurationImpl.java:879)
at
org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDataSource2(JDBCConfigurationImpl.java:921)
at
org.apache.openjpa.jdbc.schema.SchemaGenerator.<init>(SchemaGenerator.java:86)
at
org.apache.openjpa.jdbc.meta.ReverseMappingTool.run(ReverseMappingTool.java:2027)
at
org.apache.openjpa.jdbc.meta.ReverseMappingTool.run(ReverseMappingTool.java:2005)
at
org.apache.openjpa.jdbc.meta.ReverseMappingTool.run(ReverseMappingTool.java:1882)
at
org.apache.openjpa.jdbc.meta.ReverseMappingTool$1.run(ReverseMappingTool.java:1863)
at
org.apache.openjpa.lib.conf.Configurations.launchRunnable(Configurations.java:762)
at
org.apache.openjpa.lib.conf.Configurations.runAgainstAllAnchors(Configurations.java:747)
at
org.apache.openjpa.jdbc.meta.ReverseMappingTool.main(ReverseMappingTool.java:1858){code}
I downloaded the source code, and tried to run the same task in the IDE. I
can't find any place in the code where the file META-INF/persistence.xml is
loaded, so this is pretty much expected behavior, from how much I understood
after spending half an hour or so with the source code.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)