Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Liquibase hibernate5 not generating diff file in classic mode #141

Open
stevefavez opened this issue Jan 19, 2017 · 3 comments
Open

Liquibase hibernate5 not generating diff file in classic mode #141

stevefavez opened this issue Jan 19, 2017 · 3 comments

Comments

@stevefavez
Copy link

stevefavez commented Jan 19, 2017

I'm trying to generate a diff file from my jpa annotaed entities and my database. I'm using the classic mode. Here' s my liquibase properties :

changeLogFile=src/main/resources/liquibase/liquibase-changeLog.xml
url=jdbc:oracle:thin:@//oralit-scan.infra.vs.ch:1521/OTBSVC_D
username=XXXXXX
password=XXXXXXXXXXXXXXX
driver=oracle.jdbc.driver.OracleDriver
referenceUrl=hibernate:classic:liquibase/hibernate.cfg.xml
diffChangeLogFile=src/main/resources/liquibase/liquibase-diff-changeLog.xml

My hibernate.cfg.xml :

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory >
        <property name="javax.persistence.jdbc.driver">oracle.jdbc.driver.OracleDriver</property>
        <property name="javax.persistence.jdbc.url">jdbc:oracle:thin:@//oralit-scan.infra.vs.ch:1521/OTBSVC_D</property>
        <property name="javax.persistence.jdbc.user">XXXXXX</property>
        <property name="javax.persistence.jdbc.password">XXXXXXX</property>
        <property name="hibernate.dialect">org.hibernate.dialect.Oracle12cDialect</property>
    </session-factory>
</hibernate-configuration>

and, finally, my pom.xml looks like that :

<plugin>
                <groupId>org.liquibase</groupId>
                <artifactId>liquibase-maven-plugin</artifactId>
                <version>3.5.3</version>
                <configuration>
                    <propertyFile>src/main/resources/liquibase/liquibase.properties</propertyFile>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>com.oracle</groupId>
                        <artifactId>ojdbc7</artifactId>
                        <version>12.1.0.2</version>
                    </dependency>
                    <dependency>
                        <groupId>org.liquibase.ext</groupId>
                        <artifactId>liquibase-hibernate5</artifactId>
                        <version>3.6</version>
                    </dependency>
                    <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>spring-beans</artifactId>
                        <version>4.3.5.RELEASE</version>
                    </dependency>
                    <dependency>
                        <groupId>org.springframework.data</groupId>
                        <artifactId>spring-data-jpa</artifactId>
                        <version>1.7.3.RELEASE</version>
                    </dependency>
                    <dependency>
                        <groupId>javax.validation</groupId>
                        <artifactId>validation-api</artifactId>
                        <version>1.0.0.GA</version>
                    </dependency>
                </dependencies>
            </plugin>

Now, while running maven liquibase:diff, the result is a diff file containing only changeset with drop of existing tables and constraints, but no changeset for table creation.

Here's my maven execution stacktrace

INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building otbsvc 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- liquibase-maven-plugin:3.5.3:diff (default-cli) @ otbsvc ---
[INFO] ------------------------------------------------------------------------
[INFO] Parsing Liquibase Properties File
[INFO]   File: src/main/resources/liquibase/liquibase.properties
[INFO] ------------------------------------------------------------------------
INFO 19.01.17 09:35: liquibase: Could not set check compatibility mode on OracleDatabase, assuming not running in any sort of compatibility mode: Cannot read from v$parameter: ORA-00942: Table ou vue inexistante

[INFO] Executing on Database: jdbc:oracle:thin:@//oralit-scan.infra.vs.ch:1521/OTBSVC_D
INFO 19.01.17 09:35: liquibase-hibernate: Reading hibernate configuration hibernate:classic:liquibase/hibernate.cfg.xml
janv. 19, 2017 9:35:25 AM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.0.10.Final}
janv. 19, 2017 9:35:25 AM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
janv. 19, 2017 9:35:25 AM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
janv. 19, 2017 9:35:26 AM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.Oracle12cDialect
INFO 19.01.17 09:35: liquibase-hibernate: Using dialect org.hibernate.dialect.Oracle12cDialect
janv. 19, 2017 9:35:26 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
janv. 19, 2017 9:35:26 AM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.Oracle12cDialect
janv. 19, 2017 9:35:26 AM org.hibernate.engine.jdbc.env.internal.LobCreatorBuilderImpl makeLobCreatorBuilder
INFO: HHH000422: Disabling contextual LOB creation as connection was null
janv. 19, 2017 9:35:26 AM org.hibernate.type.BasicTypeRegistry register
INFO: HHH000270: Type registration [byte[]] overrides previous : org.hibernate.type.BinaryType@17229821
janv. 19, 2017 9:35:26 AM org.hibernate.type.BasicTypeRegistry register
INFO: HHH000270: Type registration [[B] overrides previous : org.hibernate.type.BinaryType@17229821
janv. 19, 2017 9:35:26 AM org.hibernate.type.BasicTypeRegistry register
INFO: HHH000270: Type registration [Byte[]] overrides previous : org.hibernate.type.WrapperBinaryType@6cbe68e9
janv. 19, 2017 9:35:26 AM org.hibernate.type.BasicTypeRegistry register
INFO: HHH000270: Type registration [[Ljava.lang.Byte;] overrides previous : org.hibernate.type.WrapperBinaryType@6cbe68e9
janv. 19, 2017 9:35:26 AM org.hibernate.envers.boot.internal.EnversServiceImpl configure
INFO: Envers integration enabled? : true
janv. 19, 2017 9:35:26 AM org.hibernate.hql.spi.id.IdTableHelper executeIdTableCreationStatements
ERROR: Unable obtain JDBC Connection
java.sql.SQLException: No connection
	at liquibase.ext.hibernate.database.HibernateDatabase$NoOpConnectionProvider.getConnection(HibernateDatabase.java:342)
	at org.hibernate.internal.SessionFactoryImpl$2.obtainConnection(SessionFactoryImpl.java:653)
	at org.hibernate.hql.spi.id.IdTableHelper.executeIdTableCreationStatements(IdTableHelper.java:67)
	at org.hibernate.hql.spi.id.global.GlobalTemporaryTableBulkIdStrategy.finishPreparation(GlobalTemporaryTableBulkIdStrategy.java:125)
	at org.hibernate.hql.spi.id.global.GlobalTemporaryTableBulkIdStrategy.finishPreparation(GlobalTemporaryTableBulkIdStrategy.java:42)
	at org.hibernate.hql.spi.id.AbstractMultiTableBulkIdStrategyImpl.prepare(AbstractMultiTableBulkIdStrategyImpl.java:88)
	at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:453)
	at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:708)
	at liquibase.ext.hibernate.database.HibernateClassicDatabase.configureSources(HibernateClassicDatabase.java:56)
	at liquibase.ext.hibernate.database.HibernateDatabase.buildMetadataFromPath(HibernateDatabase.java:146)
	at liquibase.ext.hibernate.database.HibernateClassicDatabase.buildMetadataFromPath(HibernateClassicDatabase.java:39)
	at liquibase.ext.hibernate.database.HibernateDatabase.buildMetadata(HibernateDatabase.java:136)
	at liquibase.ext.hibernate.database.HibernateDatabase.setConnection(HibernateDatabase.java:75)
	at liquibase.database.DatabaseFactory.findCorrectDatabaseImplementation(DatabaseFactory.java:131)
	at liquibase.database.DatabaseFactory.openDatabase(DatabaseFactory.java:151)
	at liquibase.integration.commandline.CommandLineUtils.createDatabaseObject(CommandLineUtils.java:85)
	at org.liquibase.maven.plugins.LiquibaseDatabaseDiff.performLiquibaseTask(LiquibaseDatabaseDiff.java:166)
	at org.liquibase.maven.plugins.AbstractLiquibaseMojo.execute(AbstractLiquibaseMojo.java:394)
	at org.liquibase.maven.plugins.LiquibaseDatabaseDiff.execute(LiquibaseDatabaseDiff.java:146)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:197)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
	at org.codehaus.classworlds.Launcher.main(Launcher.java:47)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

janv. 19, 2017 9:35:26 AM org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator initiateService
WARN: HHH000342: Could not obtain connection to query metadata : No connection
janv. 19, 2017 9:35:26 AM org.hibernate.engine.jdbc.env.internal.LobCreatorBuilderImpl makeLobCreatorBuilder
INFO: HHH000422: Disabling contextual LOB creation as connection was null
janv. 19, 2017 9:35:26 AM org.hibernate.type.BasicTypeRegistry register
INFO: HHH000270: Type registration [byte[]] overrides previous : org.hibernate.type.BinaryType@17229821
janv. 19, 2017 9:35:26 AM org.hibernate.type.BasicTypeRegistry register
INFO: HHH000270: Type registration [[B] overrides previous : org.hibernate.type.BinaryType@17229821
janv. 19, 2017 9:35:26 AM org.hibernate.type.BasicTypeRegistry register
INFO: HHH000270: Type registration [Byte[]] overrides previous : org.hibernate.type.WrapperBinaryType@6cbe68e9
janv. 19, 2017 9:35:26 AM org.hibernate.type.BasicTypeRegistry register
INFO: HHH000270: Type registration [[Ljava.lang.Byte;] overrides previous : org.hibernate.type.WrapperBinaryType@6cbe68e9
janv. 19, 2017 9:35:26 AM org.hibernate.envers.boot.internal.EnversServiceImpl configure
INFO: Envers integration enabled? : true
[INFO] Performing Diff on database OTBSVC_U @ jdbc:oracle:thin:@//oralit-scan.infra.vs.ch:1521/OTBSVC_D (Default Schema: OTBSVC_U)
WARNING 19.01.17 09:35: liquibase: Liquibase needs to access the DBA_RECYCLEBIN table so we can automatically handle the case where constraints are deleted and restored. Since Oracle doesn't properly restore the original table names referenced in the constraint, we use the information from the DBA_RECYCLEBIN to automatically correct this issue.

The user you used to connect to the database (OTBSVC_U) needs to have "SELECT ON SYS.DBA_RECYCLEBIN" permissions set before we can perform this operation. Please run the following SQL to set the appropriate permissions, and try running the command again.

     GRANT SELECT ON SYS.DBA_RECYCLEBIN TO OTBSVC_U;
INFO 19.01.17 09:35: liquibase: src\main\resources\liquibase\liquibase-diff-changeLog.xml does not exist, creating
[INFO] Differences written to Change Log File, src/main/resources/liquibase/liquibase-diff-changeLog.xml

Open to any idea.
Thanks

Steve

┆Issue is synchronized with this Jira Bug by Unito

@liviorobojob
Copy link

Hi,

I'm having the same problem. Did you find a solution?

@stevefavez
Copy link
Author

Hi,
we're using a workaround - using the hibernate-spring but, as we're using persistence.xml in a jee environment, when creating the diff, we've to comment the "jta-data-source" in the persistence.xml in order to ensure that spring is not trying to look for a jndi datasource.
Furthermore, we've added required plugin dependencies in the plugin, not in the project (in our pom.xml)

Let me know if you need more help, I can share some files with you

St

@cchet
Copy link

cchet commented Aug 29, 2020

I face the same problem. Liquibase maven plugin should not search a JTA datasource, because there will not be any during development.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants