Merge remote-tracking branch 'upstream/main' into wip/6.0
This commit is contained in:
commit
cdeb95a4d5
|
@ -22,4 +22,5 @@ hibernate.cache.region_prefix hibernate.test
|
||||||
hibernate.cache.region.factory_class org.hibernate.testing.cache.CachingRegionFactory
|
hibernate.cache.region.factory_class org.hibernate.testing.cache.CachingRegionFactory
|
||||||
|
|
||||||
hibernate.service.allow_crawling=false
|
hibernate.service.allow_crawling=false
|
||||||
hibernate.session.events.log=true
|
hibernate.session.events.log=true
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,6 @@
|
||||||
<bundle>mvn:com.fasterxml/classmate/0.8.0</bundle>
|
<bundle>mvn:com.fasterxml/classmate/0.8.0</bundle>
|
||||||
<bundle>mvn:org.apache.logging.log4j/log4j-api/2.0</bundle>
|
<bundle>mvn:org.apache.logging.log4j/log4j-api/2.0</bundle>
|
||||||
<bundle>mvn:org.jboss.logging/jboss-logging/3.2.1.Final</bundle>
|
<bundle>mvn:org.jboss.logging/jboss-logging/3.2.1.Final</bundle>
|
||||||
<bundle>mvn:org.javassist/javassist/3.18.1-GA</bundle>
|
|
||||||
|
|
||||||
<bundle>mvn:org.hibernate.common/hibernate-commons-annotations/4.0.5.Final</bundle>
|
<bundle>mvn:org.hibernate.common/hibernate-commons-annotations/4.0.5.Final</bundle>
|
||||||
|
|
||||||
|
|
|
@ -56,9 +56,6 @@
|
||||||
org.apache.karaf.shell.console,
|
org.apache.karaf.shell.console,
|
||||||
org.apache.karaf.shell.commands,
|
org.apache.karaf.shell.commands,
|
||||||
javax.persistence;version="[1.0.0,2.1.0]",
|
javax.persistence;version="[1.0.0,2.1.0]",
|
||||||
<!-- Needed for proxying's Javassist enhancement during runtime -->
|
|
||||||
org.hibernate.proxy,
|
|
||||||
javassist.util.proxy,
|
|
||||||
*
|
*
|
||||||
</Import-Package>
|
</Import-Package>
|
||||||
<Meta-Persistence>META-INF/persistence.xml</Meta-Persistence>
|
<Meta-Persistence>META-INF/persistence.xml</Meta-Persistence>
|
||||||
|
|
|
@ -33,7 +33,6 @@
|
||||||
<bundle>mvn:com.fasterxml/classmate/0.8.0</bundle>
|
<bundle>mvn:com.fasterxml/classmate/0.8.0</bundle>
|
||||||
<bundle>mvn:org.apache.logging.log4j/log4j-api/2.0</bundle>
|
<bundle>mvn:org.apache.logging.log4j/log4j-api/2.0</bundle>
|
||||||
<bundle>mvn:org.jboss.logging/jboss-logging/3.2.1.Final</bundle>
|
<bundle>mvn:org.jboss.logging/jboss-logging/3.2.1.Final</bundle>
|
||||||
<bundle>mvn:org.javassist/javassist/3.18.1-GA</bundle>
|
|
||||||
|
|
||||||
<bundle>mvn:org.hibernate.common/hibernate-commons-annotations/4.0.5.Final</bundle>
|
<bundle>mvn:org.hibernate.common/hibernate-commons-annotations/4.0.5.Final</bundle>
|
||||||
|
|
||||||
|
|
|
@ -68,9 +68,6 @@
|
||||||
org.apache.karaf.shell.commands,
|
org.apache.karaf.shell.commands,
|
||||||
org.h2,
|
org.h2,
|
||||||
javax.persistence;version="[1.0.0,2.1.0]",
|
javax.persistence;version="[1.0.0,2.1.0]",
|
||||||
<!-- Needed for proxying's Javassist enhancement during runtime -->
|
|
||||||
org.hibernate.proxy,
|
|
||||||
javassist.util.proxy,
|
|
||||||
*
|
*
|
||||||
</Import-Package>
|
</Import-Package>
|
||||||
</instructions>
|
</instructions>
|
||||||
|
|
|
@ -41,7 +41,6 @@
|
||||||
<bundle>mvn:com.fasterxml/classmate/0.8.0</bundle>
|
<bundle>mvn:com.fasterxml/classmate/0.8.0</bundle>
|
||||||
<bundle>mvn:org.apache.logging.log4j/log4j-api/2.0</bundle>
|
<bundle>mvn:org.apache.logging.log4j/log4j-api/2.0</bundle>
|
||||||
<bundle>mvn:org.jboss.logging/jboss-logging/3.2.1.Final</bundle>
|
<bundle>mvn:org.jboss.logging/jboss-logging/3.2.1.Final</bundle>
|
||||||
<bundle>mvn:org.javassist/javassist/3.18.1-GA</bundle>
|
|
||||||
|
|
||||||
<bundle>mvn:org.hibernate.common/hibernate-commons-annotations/4.0.5.Final</bundle>
|
<bundle>mvn:org.hibernate.common/hibernate-commons-annotations/4.0.5.Final</bundle>
|
||||||
|
|
||||||
|
|
|
@ -76,9 +76,6 @@
|
||||||
org.hibernate.cfg,
|
org.hibernate.cfg,
|
||||||
org.hibernate.service,
|
org.hibernate.service,
|
||||||
javax.persistence;version="[1.0.0,2.1.0]",
|
javax.persistence;version="[1.0.0,2.1.0]",
|
||||||
<!-- Needed for proxy enhancement during runtime -->
|
|
||||||
org.hibernate.proxy,
|
|
||||||
javassist.util.proxy,
|
|
||||||
*
|
*
|
||||||
</Import-Package>
|
</Import-Package>
|
||||||
</instructions>
|
</instructions>
|
||||||
|
|
|
@ -434,7 +434,7 @@ Enable lazy loading feature in runtime bytecode enhancement. This way, even basi
|
||||||
Enable association management feature in runtime bytecode enhancement which automatically synchronizes a bidirectional association when only one side is changed.
|
Enable association management feature in runtime bytecode enhancement which automatically synchronizes a bidirectional association when only one side is changed.
|
||||||
|
|
||||||
`*hibernate.bytecode.provider*` (e.g. `bytebuddy` (default value))::
|
`*hibernate.bytecode.provider*` (e.g. `bytebuddy` (default value))::
|
||||||
The https://docs.jboss.org/hibernate/orm/{majorMinorVersion}/javadocs/org/hibernate/bytecode/spi/BytecodeProvider.html[`BytecodeProvider`] built-in implementation flavor. Currently, only `bytebuddy` and `javassist` are valid values; `bytebuddy` is the default and recommended choice; `javassist` will be removed soon.
|
The https://docs.jboss.org/hibernate/orm/{majorMinorVersion}/javadocs/org/hibernate/bytecode/spi/BytecodeProvider.html[`BytecodeProvider`] built-in implementation flavor. Currently, only `bytebuddy` is a valid value, as older deprecated options have been removed.
|
||||||
|
|
||||||
`*hibernate.bytecode.use_reflection_optimizer*` (e.g. `true` or `false` (default value))::
|
`*hibernate.bytecode.use_reflection_optimizer*` (e.g. `true` or `false` (default value))::
|
||||||
Should we use reflection optimization? The reflection optimizer implements the https://docs.jboss.org/hibernate/orm/{majorMinorVersion}/javadocs/org/hibernate/bytecode/spi/ReflectionOptimizer.html[`ReflectionOptimizer`] interface and improves entity instantiation and property getter/setter calls.
|
Should we use reflection optimization? The reflection optimizer implements the https://docs.jboss.org/hibernate/orm/{majorMinorVersion}/javadocs/org/hibernate/bytecode/spi/ReflectionOptimizer.html[`ReflectionOptimizer`] interface and improves entity instantiation and property getter/setter calls.
|
||||||
|
|
|
@ -455,10 +455,9 @@ Hibernate will trigger a Persistence Context flush if there are pending `Account
|
||||||
==== Define a custom entity proxy
|
==== Define a custom entity proxy
|
||||||
|
|
||||||
By default, when it needs to use a proxy instead of the actual POJO, Hibernate is going to use a Bytecode manipulation library like
|
By default, when it needs to use a proxy instead of the actual POJO, Hibernate is going to use a Bytecode manipulation library like
|
||||||
https://jboss-javassist.github.io/javassist/[Javassist] or
|
|
||||||
https://bytebuddy.net/[Byte Buddy].
|
https://bytebuddy.net/[Byte Buddy].
|
||||||
|
|
||||||
However, if the entity class is final, Javassist will not create a proxy and you will get a POJO even when you only need a proxy reference.
|
However, if the entity class is final, a proxy will not be created; you will get a POJO even when you only need a proxy reference.
|
||||||
In this case, you could proxy an interface that this particular entity implements, as illustrated by the following example.
|
In this case, you could proxy an interface that this particular entity implements, as illustrated by the following example.
|
||||||
|
|
||||||
[[entity-proxy-interface-mapping]]
|
[[entity-proxy-interface-mapping]]
|
||||||
|
|
|
@ -93,7 +93,6 @@ That `DataSource` is then used by your `persistence.xml` persistence-unit. The f
|
||||||
Your bundle's manifest will need to import, at a minimum:
|
Your bundle's manifest will need to import, at a minimum:
|
||||||
|
|
||||||
* `javax.persistence`
|
* `javax.persistence`
|
||||||
* `org.hibernate.proxy` and `javassist.util.proxy`, due to Hibernate's ability to return proxies for lazy initialization (Javassist enhancement occurs on the entity's `ClassLoader` during runtime).
|
|
||||||
|
|
||||||
=== Obtaining an EntityManger
|
=== Obtaining an EntityManger
|
||||||
|
|
||||||
|
@ -123,7 +122,6 @@ Similar to any other JPA setup, your bundle must include a `persistence.xml` fil
|
||||||
Your bundle's manifest will need to import, at a minimum:
|
Your bundle's manifest will need to import, at a minimum:
|
||||||
|
|
||||||
* `javax.persistence`
|
* `javax.persistence`
|
||||||
* `org.hibernate.proxy` and `javassist.util.proxy`, due to Hibernate's ability to return proxies for lazy initialization (Javassist enhancement occurs on the entity's `ClassLoader` during runtime)
|
|
||||||
* JDBC driver package (example: `org.h2`)
|
* JDBC driver package (example: `org.h2`)
|
||||||
* `org.osgi.framework`, necessary to discover the `EntityManagerFactory` (described below)
|
* `org.osgi.framework`, necessary to discover the `EntityManagerFactory` (described below)
|
||||||
|
|
||||||
|
@ -157,7 +155,6 @@ Native Hibernate use is also supported. The client bundle is responsible for man
|
||||||
Your bundle's manifest will need to import, at a minimum:
|
Your bundle's manifest will need to import, at a minimum:
|
||||||
|
|
||||||
* `javax.persistence`
|
* `javax.persistence`
|
||||||
* `org.hibernate.proxy` and `javassist.util.proxy`, due to Hibernate's ability to return proxies for lazy initialization (Javassist enhancement occurs on the entity's `ClassLoader` during runtime)
|
|
||||||
* JDBC driver package (example: `org.h2`)
|
* JDBC driver package (example: `org.h2`)
|
||||||
* `org.osgi.framework`, necessary to discover the `SessionFactory` (described below)
|
* `org.osgi.framework`, necessary to discover the `SessionFactory` (described below)
|
||||||
* `org.hibernate.*` packages, as necessary (ex: cfg, criterion, service, etc.)
|
* `org.hibernate.*` packages, as necessary (ex: cfg, criterion, service, etc.)
|
||||||
|
|
|
@ -77,7 +77,6 @@ dependencies {
|
||||||
testImplementation libraries.byteman_bmunit
|
testImplementation libraries.byteman_bmunit
|
||||||
|
|
||||||
testRuntimeOnly libraries.log4j2
|
testRuntimeOnly libraries.log4j2
|
||||||
testRuntimeOnly libraries.javassist
|
|
||||||
testRuntimeOnly libraries.byteBuddy
|
testRuntimeOnly libraries.byteBuddy
|
||||||
|
|
||||||
//Databases
|
//Databases
|
||||||
|
|
|
@ -27,7 +27,6 @@ ext {
|
||||||
weldVersion = '3.1.5.Final'
|
weldVersion = '3.1.5.Final'
|
||||||
jakartaWeldVersion = '4.0.1.SP1'
|
jakartaWeldVersion = '4.0.1.SP1'
|
||||||
|
|
||||||
javassistVersion = '3.27.0-GA'
|
|
||||||
byteBuddyVersion = '1.11.12'
|
byteBuddyVersion = '1.11.12'
|
||||||
|
|
||||||
agroalVersion = '1.9'
|
agroalVersion = '1.9'
|
||||||
|
@ -70,9 +69,6 @@ ext {
|
||||||
// Dom4J
|
// Dom4J
|
||||||
dom4j: 'org.dom4j:dom4j:2.1.3@jar',
|
dom4j: 'org.dom4j:dom4j:2.1.3@jar',
|
||||||
|
|
||||||
// Javassist
|
|
||||||
javassist: "org.javassist:javassist:${javassistVersion}",
|
|
||||||
|
|
||||||
// Byte Buddy
|
// Byte Buddy
|
||||||
byteBuddy: "net.bytebuddy:byte-buddy:${byteBuddyVersion}",
|
byteBuddy: "net.bytebuddy:byte-buddy:${byteBuddyVersion}",
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,6 @@ dependencies {
|
||||||
testRuntimeOnly "org.jboss.spec.javax.ejb:jboss-ejb-api_3.2_spec:1.0.0.Final"
|
testRuntimeOnly "org.jboss.spec.javax.ejb:jboss-ejb-api_3.2_spec:1.0.0.Final"
|
||||||
testRuntimeOnly libraries.jakarta_el
|
testRuntimeOnly libraries.jakarta_el
|
||||||
testRuntimeOnly 'jaxen:jaxen:1.1'
|
testRuntimeOnly 'jaxen:jaxen:1.1'
|
||||||
testRuntimeOnly libraries.javassist
|
|
||||||
testRuntimeOnly libraries.byteBuddy
|
testRuntimeOnly libraries.byteBuddy
|
||||||
testRuntimeOnly libraries.jakarta_weld
|
testRuntimeOnly libraries.jakarta_weld
|
||||||
testRuntimeOnly libraries.atomikos
|
testRuntimeOnly libraries.atomikos
|
||||||
|
|
|
@ -21,10 +21,6 @@ configurations {
|
||||||
tests {
|
tests {
|
||||||
description = 'Configuration for the produced test jar'
|
description = 'Configuration for the produced test jar'
|
||||||
}
|
}
|
||||||
|
|
||||||
javassist {
|
|
||||||
description "Dependencies for compiling and running the Javassist tests in the `javassist` source-set"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -45,7 +41,6 @@ dependencies {
|
||||||
compileOnly libraries.validation
|
compileOnly libraries.validation
|
||||||
compileOnly libraries.ant
|
compileOnly libraries.ant
|
||||||
compileOnly libraries.cdi
|
compileOnly libraries.cdi
|
||||||
compileOnly libraries.javassist
|
|
||||||
|
|
||||||
testImplementation project(':hibernate-testing')
|
testImplementation project(':hibernate-testing')
|
||||||
testImplementation libraries.shrinkwrap_api
|
testImplementation libraries.shrinkwrap_api
|
||||||
|
@ -71,7 +66,6 @@ dependencies {
|
||||||
testRuntimeOnly "org.jboss.spec.javax.ejb:jboss-ejb-api_3.2_spec:1.0.0.Final"
|
testRuntimeOnly "org.jboss.spec.javax.ejb:jboss-ejb-api_3.2_spec:1.0.0.Final"
|
||||||
testRuntimeOnly libraries.expression_language
|
testRuntimeOnly libraries.expression_language
|
||||||
testRuntimeOnly 'jaxen:jaxen:1.1'
|
testRuntimeOnly 'jaxen:jaxen:1.1'
|
||||||
// testRuntimeOnly libraries.javassist
|
|
||||||
testRuntimeOnly libraries.byteBuddy
|
testRuntimeOnly libraries.byteBuddy
|
||||||
testRuntimeOnly libraries.weld
|
testRuntimeOnly libraries.weld
|
||||||
testRuntimeOnly libraries.atomikos
|
testRuntimeOnly libraries.atomikos
|
||||||
|
@ -163,14 +157,6 @@ sourceSets {
|
||||||
srcDir 'src/test/bundles'
|
srcDir 'src/test/bundles'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
testJavassist {
|
|
||||||
// define the testJavassist source-set
|
|
||||||
java {
|
|
||||||
compileClasspath += main.output + test.output + configurations.javassist
|
|
||||||
runtimeClasspath += main.output + test.output + configurations.javassist
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
xjc {
|
xjc {
|
||||||
|
|
|
@ -14,7 +14,7 @@ import org.hibernate.service.Service;
|
||||||
* An interface for factories of {@link ProxyFactory proxy factory} instances.
|
* An interface for factories of {@link ProxyFactory proxy factory} instances.
|
||||||
* <p/>
|
* <p/>
|
||||||
* Currently used to abstract from the tuplizer whether we are using Byte Buddy or
|
* Currently used to abstract from the tuplizer whether we are using Byte Buddy or
|
||||||
* not for lazy proxy generation.
|
* possibly another implementation (in the future?) for lazy proxy generation.
|
||||||
*
|
*
|
||||||
* @author Steve Ebersole
|
* @author Steve Ebersole
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -1497,9 +1497,8 @@ public interface AvailableSettings extends org.hibernate.jpa.AvailableSettings {
|
||||||
*/
|
*/
|
||||||
String CHECK_NULLABILITY = "hibernate.check_nullability";
|
String CHECK_NULLABILITY = "hibernate.check_nullability";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pick which bytecode enhancing library to use. Currently only supports bytebuddy.
|
* Pick which bytecode enhancing library to use. Currently supports only bytebuddy, bytebuddy being the default since version 5.3.
|
||||||
*/
|
*/
|
||||||
String BYTECODE_PROVIDER = "hibernate.bytecode.provider";
|
String BYTECODE_PROVIDER = "hibernate.bytecode.provider";
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,10 @@ import org.hibernate.dialect.pagination.OffsetFetchLimitHandler;
|
||||||
import org.hibernate.dialect.sequence.PostgreSQLSequenceSupport;
|
import org.hibernate.dialect.sequence.PostgreSQLSequenceSupport;
|
||||||
import org.hibernate.dialect.sequence.SequenceSupport;
|
import org.hibernate.dialect.sequence.SequenceSupport;
|
||||||
import org.hibernate.engine.jdbc.dialect.spi.DialectResolutionInfo;
|
import org.hibernate.engine.jdbc.dialect.spi.DialectResolutionInfo;
|
||||||
|
import org.hibernate.engine.jdbc.env.spi.IdentifierCaseStrategy;
|
||||||
|
import org.hibernate.engine.jdbc.env.spi.IdentifierHelper;
|
||||||
|
import org.hibernate.engine.jdbc.env.spi.IdentifierHelperBuilder;
|
||||||
|
import org.hibernate.engine.jdbc.env.spi.NameQualifierSupport;
|
||||||
import org.hibernate.engine.spi.SessionFactoryImplementor;
|
import org.hibernate.engine.spi.SessionFactoryImplementor;
|
||||||
import org.hibernate.query.NullOrdering;
|
import org.hibernate.query.NullOrdering;
|
||||||
import org.hibernate.query.TemporalUnit;
|
import org.hibernate.query.TemporalUnit;
|
||||||
|
@ -25,6 +29,8 @@ import org.hibernate.sql.ast.tree.Statement;
|
||||||
import org.hibernate.sql.exec.spi.JdbcOperation;
|
import org.hibernate.sql.exec.spi.JdbcOperation;
|
||||||
import org.hibernate.type.StandardBasicTypes;
|
import org.hibernate.type.StandardBasicTypes;
|
||||||
|
|
||||||
|
import java.sql.DatabaseMetaData;
|
||||||
|
import java.sql.SQLException;
|
||||||
import java.sql.Types;
|
import java.sql.Types;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -515,4 +521,23 @@ public class CockroachDialect extends Dialect {
|
||||||
public RowLockStrategy getWriteRowLockStrategy() {
|
public RowLockStrategy getWriteRowLockStrategy() {
|
||||||
return getVersion() >= 2010 ? RowLockStrategy.TABLE : RowLockStrategy.NONE;
|
return getVersion() >= 2010 ? RowLockStrategy.TABLE : RowLockStrategy.NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public NameQualifierSupport getNameQualifierSupport() {
|
||||||
|
// This method is overridden so the correct value will be returned when
|
||||||
|
// DatabaseMetaData is not available.
|
||||||
|
return NameQualifierSupport.SCHEMA;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IdentifierHelper buildIdentifierHelper(IdentifierHelperBuilder builder, DatabaseMetaData dbMetaData)
|
||||||
|
throws SQLException {
|
||||||
|
|
||||||
|
if ( dbMetaData == null ) {
|
||||||
|
builder.setUnquotedCaseStrategy( IdentifierCaseStrategy.LOWER );
|
||||||
|
builder.setQuotedCaseStrategy( IdentifierCaseStrategy.MIXED );
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.buildIdentifierHelper( builder, dbMetaData );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@ import org.hibernate.dialect.function.FieldFunction;
|
||||||
import org.hibernate.engine.jdbc.env.spi.IdentifierCaseStrategy;
|
import org.hibernate.engine.jdbc.env.spi.IdentifierCaseStrategy;
|
||||||
import org.hibernate.engine.jdbc.env.spi.IdentifierHelper;
|
import org.hibernate.engine.jdbc.env.spi.IdentifierHelper;
|
||||||
import org.hibernate.engine.jdbc.env.spi.IdentifierHelperBuilder;
|
import org.hibernate.engine.jdbc.env.spi.IdentifierHelperBuilder;
|
||||||
|
import org.hibernate.engine.jdbc.env.spi.NameQualifierSupport;
|
||||||
import org.hibernate.query.NullOrdering;
|
import org.hibernate.query.NullOrdering;
|
||||||
import org.hibernate.query.NullPrecedence;
|
import org.hibernate.query.NullPrecedence;
|
||||||
import org.hibernate.PessimisticLockException;
|
import org.hibernate.PessimisticLockException;
|
||||||
|
@ -837,6 +838,11 @@ public class MySQLDialect extends Dialect {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public NameQualifierSupport getNameQualifierSupport() {
|
||||||
|
return NameQualifierSupport.CATALOG;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IdentifierHelper buildIdentifierHelper(IdentifierHelperBuilder builder, DatabaseMetaData dbMetaData)
|
public IdentifierHelper buildIdentifierHelper(IdentifierHelperBuilder builder, DatabaseMetaData dbMetaData)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
|
|
|
@ -33,6 +33,7 @@ import org.hibernate.engine.jdbc.dialect.spi.DialectResolutionInfo;
|
||||||
import org.hibernate.engine.jdbc.env.spi.IdentifierCaseStrategy;
|
import org.hibernate.engine.jdbc.env.spi.IdentifierCaseStrategy;
|
||||||
import org.hibernate.engine.jdbc.env.spi.IdentifierHelper;
|
import org.hibernate.engine.jdbc.env.spi.IdentifierHelper;
|
||||||
import org.hibernate.engine.jdbc.env.spi.IdentifierHelperBuilder;
|
import org.hibernate.engine.jdbc.env.spi.IdentifierHelperBuilder;
|
||||||
|
import org.hibernate.engine.jdbc.env.spi.NameQualifierSupport;
|
||||||
import org.hibernate.engine.spi.SessionFactoryImplementor;
|
import org.hibernate.engine.spi.SessionFactoryImplementor;
|
||||||
import org.hibernate.exception.LockAcquisitionException;
|
import org.hibernate.exception.LockAcquisitionException;
|
||||||
import org.hibernate.exception.spi.SQLExceptionConversionDelegate;
|
import org.hibernate.exception.spi.SQLExceptionConversionDelegate;
|
||||||
|
@ -350,6 +351,18 @@ public class PostgreSQLDialect extends Dialect {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public NameQualifierSupport getNameQualifierSupport() {
|
||||||
|
// This method is overridden so the correct value will be returned when
|
||||||
|
// DatabaseMetaData is not available.
|
||||||
|
return NameQualifierSupport.SCHEMA;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCurrentSchemaCommand() {
|
||||||
|
return "select current_schema()";
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean supportsIfExistsBeforeTableName() {
|
public boolean supportsIfExistsBeforeTableName() {
|
||||||
return getVersion() >= 820;
|
return getVersion() >= 820;
|
||||||
|
|
|
@ -1822,9 +1822,7 @@ public interface CoreMessageLogger extends BasicLogger {
|
||||||
@Message(value = "Detaching an uninitialized collection with enabled filters from a session: %s", id = 506)
|
@Message(value = "Detaching an uninitialized collection with enabled filters from a session: %s", id = 506)
|
||||||
void enabledFiltersWhenDetachFromSession(String collectionInfoString);
|
void enabledFiltersWhenDetachFromSession(String collectionInfoString);
|
||||||
|
|
||||||
@LogMessage(level = WARN)
|
@Message(value = "The Javassist based BytecodeProvider has been removed: remove the `hibernate.bytecode.provider` configuration property to switch to the default provider", id = 508)
|
||||||
@Message(value = "The Javassist based BytecodeProvider is deprecated. Please switch to using the ByteBuddy based BytecodeProvider, " +
|
HibernateException usingRemovedJavassistBytecodeProvider();
|
||||||
"which is the default since Hibernate ORM 5.3. The Javassist one will be removed soon.", id = 507)
|
|
||||||
void warnUsingJavassistBytecodeProviderIsDeprecated();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -23,7 +23,7 @@ import org.hibernate.tool.schema.extract.spi.InformationExtractor;
|
||||||
import org.hibernate.tool.schema.extract.spi.NameSpaceTablesInformation;
|
import org.hibernate.tool.schema.extract.spi.NameSpaceTablesInformation;
|
||||||
import org.hibernate.tool.schema.extract.spi.SequenceInformation;
|
import org.hibernate.tool.schema.extract.spi.SequenceInformation;
|
||||||
import org.hibernate.tool.schema.extract.spi.TableInformation;
|
import org.hibernate.tool.schema.extract.spi.TableInformation;
|
||||||
import org.hibernate.tool.schema.internal.exec.ImprovedExtractionContextImpl;
|
import org.hibernate.tool.schema.spi.SchemaManagementTool;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Steve Ebersole
|
* @author Steve Ebersole
|
||||||
|
@ -31,7 +31,7 @@ import org.hibernate.tool.schema.internal.exec.ImprovedExtractionContextImpl;
|
||||||
public class DatabaseInformationImpl
|
public class DatabaseInformationImpl
|
||||||
implements DatabaseInformation, ExtractionContext.DatabaseObjectAccess {
|
implements DatabaseInformation, ExtractionContext.DatabaseObjectAccess {
|
||||||
private final JdbcEnvironment jdbcEnvironment;
|
private final JdbcEnvironment jdbcEnvironment;
|
||||||
private final ImprovedExtractionContextImpl extractionContext;
|
private final ExtractionContext extractionContext;
|
||||||
private final InformationExtractor extractor;
|
private final InformationExtractor extractor;
|
||||||
|
|
||||||
private final Map<QualifiedSequenceName, SequenceInformation> sequenceInformationMap = new HashMap<>();
|
private final Map<QualifiedSequenceName, SequenceInformation> sequenceInformationMap = new HashMap<>();
|
||||||
|
@ -40,10 +40,10 @@ public class DatabaseInformationImpl
|
||||||
ServiceRegistry serviceRegistry,
|
ServiceRegistry serviceRegistry,
|
||||||
JdbcEnvironment jdbcEnvironment,
|
JdbcEnvironment jdbcEnvironment,
|
||||||
DdlTransactionIsolator ddlTransactionIsolator,
|
DdlTransactionIsolator ddlTransactionIsolator,
|
||||||
Namespace.Name defaultNamespace) throws SQLException {
|
Namespace.Name defaultNamespace,
|
||||||
|
SchemaManagementTool tool) throws SQLException {
|
||||||
this.jdbcEnvironment = jdbcEnvironment;
|
this.jdbcEnvironment = jdbcEnvironment;
|
||||||
|
this.extractionContext = tool.getExtractionTool().createExtractionContext(
|
||||||
this.extractionContext = new ImprovedExtractionContextImpl(
|
|
||||||
serviceRegistry,
|
serviceRegistry,
|
||||||
jdbcEnvironment,
|
jdbcEnvironment,
|
||||||
ddlTransactionIsolator,
|
ddlTransactionIsolator,
|
||||||
|
@ -52,8 +52,7 @@ public class DatabaseInformationImpl
|
||||||
this
|
this
|
||||||
);
|
);
|
||||||
|
|
||||||
// todo : make this pluggable
|
this.extractor = tool.getExtractionTool().createInformationExtractor( extractionContext );
|
||||||
this.extractor = new InformationExtractorJdbcDatabaseMetaDataImpl( extractionContext );
|
|
||||||
|
|
||||||
// because we do not have defined a way to locate sequence info by name
|
// because we do not have defined a way to locate sequence info by name
|
||||||
initializeSequences();
|
initializeSequences();
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -36,50 +36,31 @@ public class SequenceInformationExtractorLegacyImpl implements SequenceInformati
|
||||||
return SequenceInformationExtractorNoOpImpl.INSTANCE.extractMetadata( extractionContext );
|
return SequenceInformationExtractorNoOpImpl.INSTANCE.extractMetadata( extractionContext );
|
||||||
}
|
}
|
||||||
|
|
||||||
final IdentifierHelper identifierHelper = extractionContext.getJdbcEnvironment().getIdentifierHelper();
|
return extractionContext.getQueryResults(
|
||||||
final Statement statement = extractionContext.getJdbcConnection().createStatement();
|
lookupSql,
|
||||||
try {
|
null,
|
||||||
final ResultSet resultSet = statement.executeQuery( lookupSql );
|
(ExtractionContext.ResultSetProcessor<Iterable<SequenceInformation>>) resultSet -> {
|
||||||
try {
|
final IdentifierHelper identifierHelper = extractionContext.getJdbcEnvironment()
|
||||||
final List<SequenceInformation> sequenceInformationList = new ArrayList<>();
|
.getIdentifierHelper();
|
||||||
while ( resultSet.next() ) {
|
final List<SequenceInformation> sequenceInformationList = new ArrayList<>();
|
||||||
sequenceInformationList.add(
|
while ( resultSet.next() ) {
|
||||||
new SequenceInformationImpl(
|
sequenceInformationList.add(
|
||||||
new QualifiedSequenceName(
|
new SequenceInformationImpl(
|
||||||
identifierHelper.toIdentifier(
|
new QualifiedSequenceName(
|
||||||
resultSetCatalogName( resultSet )
|
identifierHelper.toIdentifier( resultSetCatalogName( resultSet ) ),
|
||||||
),
|
identifierHelper.toIdentifier( resultSetSchemaName( resultSet ) ),
|
||||||
identifierHelper.toIdentifier(
|
identifierHelper.toIdentifier( resultSetSequenceName( resultSet ) )
|
||||||
resultSetSchemaName( resultSet )
|
),
|
||||||
),
|
resultSetStartValueSize( resultSet ),
|
||||||
identifierHelper.toIdentifier(
|
resultSetMinValue( resultSet ),
|
||||||
resultSetSequenceName( resultSet )
|
resultSetMaxValue( resultSet ),
|
||||||
)
|
resultSetIncrementValue( resultSet )
|
||||||
),
|
)
|
||||||
resultSetStartValueSize( resultSet ),
|
);
|
||||||
resultSetMinValue( resultSet ),
|
}
|
||||||
resultSetMaxValue( resultSet ),
|
return sequenceInformationList;
|
||||||
resultSetIncrementValue( resultSet )
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
return sequenceInformationList;
|
);
|
||||||
}
|
|
||||||
finally {
|
|
||||||
try {
|
|
||||||
resultSet.close();
|
|
||||||
}
|
|
||||||
catch (SQLException ignore) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
finally {
|
|
||||||
try {
|
|
||||||
statement.close();
|
|
||||||
}
|
|
||||||
catch (SQLException ignore) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String sequenceNameColumn() {
|
protected String sequenceNameColumn() {
|
||||||
|
|
|
@ -8,8 +8,8 @@ package org.hibernate.tool.schema.extract.internal;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.sql.Statement;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.hibernate.boot.model.relational.QualifiedSequenceName;
|
import org.hibernate.boot.model.relational.QualifiedSequenceName;
|
||||||
|
@ -42,60 +42,49 @@ public class SequenceInformationExtractorMariaDBDatabaseImpl extends SequenceInf
|
||||||
return SequenceInformationExtractorNoOpImpl.INSTANCE.extractMetadata(extractionContext);
|
return SequenceInformationExtractorNoOpImpl.INSTANCE.extractMetadata(extractionContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
final IdentifierHelper identifierHelper = extractionContext.getJdbcEnvironment().getIdentifierHelper();
|
final List<String> sequenceNames = extractionContext.getQueryResults( lookupSql, null, resultSet -> {
|
||||||
|
final List<String> sequences = new ArrayList<>();
|
||||||
final List<SequenceInformation> sequenceInformationList = new ArrayList<>();
|
|
||||||
final List<String> sequenceNames = new ArrayList<>();
|
|
||||||
|
|
||||||
try (
|
|
||||||
final Statement statement = extractionContext.getJdbcConnection().createStatement();
|
|
||||||
final ResultSet resultSet = statement.executeQuery( lookupSql )
|
|
||||||
) {
|
|
||||||
while ( resultSet.next() ) {
|
while ( resultSet.next() ) {
|
||||||
sequenceNames.add( resultSetSequenceName( resultSet ) );
|
sequences.add( resultSetSequenceName( resultSet ) );
|
||||||
}
|
}
|
||||||
}
|
return sequences;
|
||||||
|
});
|
||||||
|
|
||||||
if ( !sequenceNames.isEmpty() ) {
|
if ( !sequenceNames.isEmpty() ) {
|
||||||
StringBuilder sequenceInfoQueryBuilder = new StringBuilder();
|
StringBuilder sequenceInfoQueryBuilder = new StringBuilder();
|
||||||
|
|
||||||
for ( String sequenceName : sequenceNames ) {
|
for ( String sequenceName : sequenceNames ) {
|
||||||
if ( sequenceInfoQueryBuilder.length() > 0 ) {
|
if ( sequenceInfoQueryBuilder.length() > 0 ) {
|
||||||
sequenceInfoQueryBuilder.append( UNION_ALL );
|
sequenceInfoQueryBuilder.append( UNION_ALL );
|
||||||
}
|
}
|
||||||
sequenceInfoQueryBuilder.append( String.format( SQL_SEQUENCE_QUERY, sequenceName ) );
|
sequenceInfoQueryBuilder.append( String.format( SQL_SEQUENCE_QUERY, sequenceName ) );
|
||||||
}
|
}
|
||||||
|
return extractionContext.getQueryResults(
|
||||||
|
sequenceInfoQueryBuilder.toString(),
|
||||||
|
null,
|
||||||
|
(ExtractionContext.ResultSetProcessor<Iterable<SequenceInformation>>) resultSet -> {
|
||||||
|
final List<SequenceInformation> sequenceInformationList = new ArrayList<>();
|
||||||
|
final IdentifierHelper identifierHelper = extractionContext.getJdbcEnvironment()
|
||||||
|
.getIdentifierHelper();
|
||||||
|
|
||||||
int index = 0;
|
while ( resultSet.next() ) {
|
||||||
|
SequenceInformation sequenceInformation = new SequenceInformationImpl(
|
||||||
try (
|
new QualifiedSequenceName(
|
||||||
final Statement statement = extractionContext.getJdbcConnection().createStatement();
|
null,
|
||||||
final ResultSet resultSet = statement.executeQuery( sequenceInfoQueryBuilder.toString() )
|
null,
|
||||||
) {
|
identifierHelper.toIdentifier( resultSetSequenceName(resultSet) )
|
||||||
|
),
|
||||||
while ( resultSet.next() ) {
|
resultSetStartValueSize(resultSet),
|
||||||
|
resultSetMinValue(resultSet),
|
||||||
SequenceInformation sequenceInformation = new SequenceInformationImpl(
|
resultSetMaxValue(resultSet),
|
||||||
new QualifiedSequenceName(
|
resultSetIncrementValue(resultSet)
|
||||||
null,
|
);
|
||||||
null,
|
sequenceInformationList.add(sequenceInformation);
|
||||||
identifierHelper.toIdentifier(
|
}
|
||||||
resultSetSequenceName(resultSet)
|
return sequenceInformationList;
|
||||||
)
|
});
|
||||||
),
|
|
||||||
resultSetStartValueSize(resultSet),
|
|
||||||
resultSetMinValue(resultSet),
|
|
||||||
resultSetMaxValue(resultSet),
|
|
||||||
resultSetIncrementValue(resultSet)
|
|
||||||
);
|
|
||||||
|
|
||||||
sequenceInformationList.add(sequenceInformation);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return sequenceInformationList;
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected String resultSetSequenceName(ResultSet resultSet) throws SQLException {
|
protected String resultSetSequenceName(ResultSet resultSet) throws SQLException {
|
||||||
|
|
|
@ -8,6 +8,9 @@ package org.hibernate.tool.schema.extract.spi;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.DatabaseMetaData;
|
import java.sql.DatabaseMetaData;
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
import org.hibernate.Incubating;
|
import org.hibernate.Incubating;
|
||||||
import org.hibernate.boot.model.naming.Identifier;
|
import org.hibernate.boot.model.naming.Identifier;
|
||||||
|
@ -21,6 +24,7 @@ import org.hibernate.service.ServiceRegistry;
|
||||||
* well as to delegates needed in performing extraction.
|
* well as to delegates needed in performing extraction.
|
||||||
*
|
*
|
||||||
* @author Steve Ebersole
|
* @author Steve Ebersole
|
||||||
|
* @author Gail Badner
|
||||||
*/
|
*/
|
||||||
@Incubating
|
@Incubating
|
||||||
public interface ExtractionContext {
|
public interface ExtractionContext {
|
||||||
|
@ -29,9 +33,31 @@ public interface ExtractionContext {
|
||||||
Connection getJdbcConnection();
|
Connection getJdbcConnection();
|
||||||
DatabaseMetaData getJdbcDatabaseMetaData();
|
DatabaseMetaData getJdbcDatabaseMetaData();
|
||||||
|
|
||||||
|
@Incubating
|
||||||
|
default <T> T getQueryResults(
|
||||||
|
String queryString,
|
||||||
|
Object[] positionalParameters,
|
||||||
|
ResultSetProcessor<T> resultSetProcessor) throws SQLException {
|
||||||
|
try (PreparedStatement statement = getJdbcConnection().prepareStatement( queryString )) {
|
||||||
|
if ( positionalParameters != null ) {
|
||||||
|
for ( int i = 0 ; i < positionalParameters.length ; i++ ) {
|
||||||
|
statement.setObject( i + 1, positionalParameters[i] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try (ResultSet resultSet = statement.executeQuery()) {
|
||||||
|
return resultSetProcessor.process( resultSet );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Identifier getDefaultCatalog();
|
Identifier getDefaultCatalog();
|
||||||
Identifier getDefaultSchema();
|
Identifier getDefaultSchema();
|
||||||
|
|
||||||
|
@Incubating
|
||||||
|
interface ResultSetProcessor<T> {
|
||||||
|
T process(ResultSet resultSet) throws SQLException;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* In conjunction with {@link #getDatabaseObjectAccess()} provides access to
|
* In conjunction with {@link #getDatabaseObjectAccess()} provides access to
|
||||||
* information about known database objects to the extractor.
|
* information about known database objects to the extractor.
|
||||||
|
|
|
@ -102,7 +102,8 @@ public abstract class AbstractSchemaMigrator implements SchemaMigrator {
|
||||||
final DatabaseInformation databaseInformation = Helper.buildDatabaseInformation(
|
final DatabaseInformation databaseInformation = Helper.buildDatabaseInformation(
|
||||||
tool.getServiceRegistry(),
|
tool.getServiceRegistry(),
|
||||||
ddlTransactionIsolator,
|
ddlTransactionIsolator,
|
||||||
metadata.getDatabase().getDefaultNamespace().getName()
|
metadata.getDatabase().getDefaultNamespace().getName(),
|
||||||
|
tool
|
||||||
);
|
);
|
||||||
|
|
||||||
final GenerationTarget[] targets = tool.buildGenerationTargets(
|
final GenerationTarget[] targets = tool.buildGenerationTargets(
|
||||||
|
|
|
@ -61,11 +61,11 @@ public abstract class AbstractSchemaValidator implements SchemaValidator {
|
||||||
final JdbcContext jdbcContext = tool.resolveJdbcContext( options.getConfigurationValues() );
|
final JdbcContext jdbcContext = tool.resolveJdbcContext( options.getConfigurationValues() );
|
||||||
|
|
||||||
final DdlTransactionIsolator isolator = tool.getDdlTransactionIsolator( jdbcContext );
|
final DdlTransactionIsolator isolator = tool.getDdlTransactionIsolator( jdbcContext );
|
||||||
|
|
||||||
final DatabaseInformation databaseInformation = Helper.buildDatabaseInformation(
|
final DatabaseInformation databaseInformation = Helper.buildDatabaseInformation(
|
||||||
tool.getServiceRegistry(),
|
tool.getServiceRegistry(),
|
||||||
isolator,
|
isolator,
|
||||||
metadata.getDatabase().getDefaultNamespace().getName()
|
metadata.getDatabase().getDefaultNamespace().getName(),
|
||||||
|
tool
|
||||||
);
|
);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -33,6 +33,7 @@ import org.hibernate.tool.schema.internal.exec.ScriptSourceInputFromUrl;
|
||||||
import org.hibernate.tool.schema.internal.exec.ScriptTargetOutputToFile;
|
import org.hibernate.tool.schema.internal.exec.ScriptTargetOutputToFile;
|
||||||
import org.hibernate.tool.schema.internal.exec.ScriptTargetOutputToUrl;
|
import org.hibernate.tool.schema.internal.exec.ScriptTargetOutputToUrl;
|
||||||
import org.hibernate.tool.schema.internal.exec.ScriptTargetOutputToWriter;
|
import org.hibernate.tool.schema.internal.exec.ScriptTargetOutputToWriter;
|
||||||
|
import org.hibernate.tool.schema.spi.SchemaManagementTool;
|
||||||
import org.hibernate.tool.schema.spi.ScriptSourceInput;
|
import org.hibernate.tool.schema.spi.ScriptSourceInput;
|
||||||
import org.hibernate.tool.schema.spi.ScriptTargetOutput;
|
import org.hibernate.tool.schema.spi.ScriptTargetOutput;
|
||||||
|
|
||||||
|
@ -176,14 +177,16 @@ public class Helper {
|
||||||
public static DatabaseInformation buildDatabaseInformation(
|
public static DatabaseInformation buildDatabaseInformation(
|
||||||
ServiceRegistry serviceRegistry,
|
ServiceRegistry serviceRegistry,
|
||||||
DdlTransactionIsolator ddlTransactionIsolator,
|
DdlTransactionIsolator ddlTransactionIsolator,
|
||||||
Namespace.Name defaultNamespace) {
|
Namespace.Name defaultNamespace,
|
||||||
|
SchemaManagementTool tool) {
|
||||||
final JdbcEnvironment jdbcEnvironment = serviceRegistry.getService( JdbcEnvironment.class );
|
final JdbcEnvironment jdbcEnvironment = serviceRegistry.getService( JdbcEnvironment.class );
|
||||||
try {
|
try {
|
||||||
return new DatabaseInformationImpl(
|
return new DatabaseInformationImpl(
|
||||||
serviceRegistry,
|
serviceRegistry,
|
||||||
jdbcEnvironment,
|
jdbcEnvironment,
|
||||||
ddlTransactionIsolator,
|
ddlTransactionIsolator,
|
||||||
defaultNamespace
|
defaultNamespace,
|
||||||
|
tool
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
catch (SQLException e) {
|
catch (SQLException e) {
|
||||||
|
|
|
@ -9,12 +9,14 @@ package org.hibernate.tool.schema.internal;
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.hibernate.boot.model.naming.Identifier;
|
||||||
import org.hibernate.boot.registry.selector.spi.StrategySelector;
|
import org.hibernate.boot.registry.selector.spi.StrategySelector;
|
||||||
import org.hibernate.cfg.AvailableSettings;
|
import org.hibernate.cfg.AvailableSettings;
|
||||||
import org.hibernate.dialect.Dialect;
|
import org.hibernate.dialect.Dialect;
|
||||||
import org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess;
|
import org.hibernate.engine.jdbc.connections.spi.JdbcConnectionAccess;
|
||||||
import org.hibernate.engine.jdbc.dialect.spi.DialectResolutionInfo;
|
import org.hibernate.engine.jdbc.dialect.spi.DialectResolutionInfo;
|
||||||
import org.hibernate.engine.jdbc.dialect.spi.DialectResolver;
|
import org.hibernate.engine.jdbc.dialect.spi.DialectResolver;
|
||||||
|
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
|
||||||
import org.hibernate.engine.jdbc.spi.JdbcServices;
|
import org.hibernate.engine.jdbc.spi.JdbcServices;
|
||||||
import org.hibernate.engine.jdbc.spi.SqlExceptionHelper;
|
import org.hibernate.engine.jdbc.spi.SqlExceptionHelper;
|
||||||
import org.hibernate.engine.jdbc.spi.SqlStatementLogger;
|
import org.hibernate.engine.jdbc.spi.SqlStatementLogger;
|
||||||
|
@ -27,12 +29,17 @@ import org.hibernate.service.spi.ServiceRegistryAwareService;
|
||||||
import org.hibernate.service.spi.ServiceRegistryImplementor;
|
import org.hibernate.service.spi.ServiceRegistryImplementor;
|
||||||
import org.hibernate.tool.schema.JdbcMetadaAccessStrategy;
|
import org.hibernate.tool.schema.JdbcMetadaAccessStrategy;
|
||||||
import org.hibernate.tool.schema.TargetType;
|
import org.hibernate.tool.schema.TargetType;
|
||||||
|
import org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl;
|
||||||
|
import org.hibernate.tool.schema.extract.spi.ExtractionContext;
|
||||||
|
import org.hibernate.tool.schema.extract.spi.InformationExtractor;
|
||||||
import org.hibernate.tool.schema.internal.exec.GenerationTarget;
|
import org.hibernate.tool.schema.internal.exec.GenerationTarget;
|
||||||
import org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase;
|
import org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase;
|
||||||
import org.hibernate.tool.schema.internal.exec.GenerationTargetToScript;
|
import org.hibernate.tool.schema.internal.exec.GenerationTargetToScript;
|
||||||
import org.hibernate.tool.schema.internal.exec.GenerationTargetToStdout;
|
import org.hibernate.tool.schema.internal.exec.GenerationTargetToStdout;
|
||||||
|
import org.hibernate.tool.schema.internal.exec.ImprovedExtractionContextImpl;
|
||||||
import org.hibernate.tool.schema.internal.exec.JdbcConnectionAccessProvidedConnectionImpl;
|
import org.hibernate.tool.schema.internal.exec.JdbcConnectionAccessProvidedConnectionImpl;
|
||||||
import org.hibernate.tool.schema.internal.exec.JdbcContext;
|
import org.hibernate.tool.schema.internal.exec.JdbcContext;
|
||||||
|
import org.hibernate.tool.schema.spi.ExtractionTool;
|
||||||
import org.hibernate.tool.schema.spi.SchemaCreator;
|
import org.hibernate.tool.schema.spi.SchemaCreator;
|
||||||
import org.hibernate.tool.schema.spi.SchemaDropper;
|
import org.hibernate.tool.schema.spi.SchemaDropper;
|
||||||
import org.hibernate.tool.schema.spi.SchemaFilterProvider;
|
import org.hibernate.tool.schema.spi.SchemaFilterProvider;
|
||||||
|
@ -93,7 +100,7 @@ public class HibernateSchemaManagementTool implements SchemaManagementTool, Serv
|
||||||
return new IndividuallySchemaValidatorImpl( this, getSchemaFilterProvider( options ).getValidateFilter() );
|
return new IndividuallySchemaValidatorImpl( this, getSchemaFilterProvider( options ).getValidateFilter() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private SchemaFilterProvider getSchemaFilterProvider(Map options) {
|
private SchemaFilterProvider getSchemaFilterProvider(Map options) {
|
||||||
final Object configuredOption = (options == null)
|
final Object configuredOption = (options == null)
|
||||||
? null
|
? null
|
||||||
|
@ -114,6 +121,11 @@ public class HibernateSchemaManagementTool implements SchemaManagementTool, Serv
|
||||||
this.customTarget = generationTarget;
|
this.customTarget = generationTarget;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ExtractionTool getExtractionTool() {
|
||||||
|
return HibernateExtractionTool.INSTANCE;
|
||||||
|
}
|
||||||
|
|
||||||
GenerationTarget getCustomDatabaseGenerationTarget() {
|
GenerationTarget getCustomDatabaseGenerationTarget() {
|
||||||
return customTarget;
|
return customTarget;
|
||||||
}
|
}
|
||||||
|
@ -176,7 +188,10 @@ public class HibernateSchemaManagementTool implements SchemaManagementTool, Serv
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( targetDescriptor.getTargetTypes().contains( TargetType.DATABASE ) ) {
|
if ( targetDescriptor.getTargetTypes().contains( TargetType.DATABASE ) ) {
|
||||||
targets[index] = new GenerationTargetToDatabase( ddlTransactionIsolator, false );
|
targets[index] = customTarget == null
|
||||||
|
? new GenerationTargetToDatabase( ddlTransactionIsolator, false )
|
||||||
|
: customTarget;
|
||||||
|
index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return targets;
|
return targets;
|
||||||
|
@ -361,4 +376,34 @@ public class HibernateSchemaManagementTool implements SchemaManagementTool, Serv
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static class HibernateExtractionTool implements ExtractionTool {
|
||||||
|
|
||||||
|
private static final HibernateExtractionTool INSTANCE = new HibernateExtractionTool();
|
||||||
|
|
||||||
|
private HibernateExtractionTool() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ExtractionContext createExtractionContext(
|
||||||
|
ServiceRegistry serviceRegistry,
|
||||||
|
JdbcEnvironment jdbcEnvironment,
|
||||||
|
DdlTransactionIsolator ddlTransactionIsolator,
|
||||||
|
Identifier defaultCatalog,
|
||||||
|
Identifier defaultSchema,
|
||||||
|
ExtractionContext.DatabaseObjectAccess databaseObjectAccess) {
|
||||||
|
return new ImprovedExtractionContextImpl(
|
||||||
|
serviceRegistry,
|
||||||
|
jdbcEnvironment,
|
||||||
|
ddlTransactionIsolator,
|
||||||
|
defaultCatalog,
|
||||||
|
defaultSchema,
|
||||||
|
databaseObjectAccess
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public InformationExtractor createInformationExtractor(ExtractionContext extractionContext) {
|
||||||
|
return new InformationExtractorJdbcDatabaseMetaDataImpl( extractionContext );
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
/*
|
||||||
|
* Hibernate, Relational Persistence for Idiomatic Java
|
||||||
|
*
|
||||||
|
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
||||||
|
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
||||||
|
*/
|
||||||
|
package org.hibernate.tool.schema.spi;
|
||||||
|
|
||||||
|
import org.hibernate.Incubating;
|
||||||
|
import org.hibernate.boot.model.naming.Identifier;
|
||||||
|
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
|
||||||
|
import org.hibernate.resource.transaction.spi.DdlTransactionIsolator;
|
||||||
|
import org.hibernate.service.ServiceRegistry;
|
||||||
|
import org.hibernate.tool.schema.extract.spi.ExtractionContext;
|
||||||
|
import org.hibernate.tool.schema.extract.spi.InformationExtractor;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encapsulates the functionality for extracting database metadata used by
|
||||||
|
* {@link SchemaManagementTool}.
|
||||||
|
*
|
||||||
|
* @author Gail Badner
|
||||||
|
*/
|
||||||
|
@Incubating
|
||||||
|
public interface ExtractionTool {
|
||||||
|
|
||||||
|
ExtractionContext createExtractionContext(
|
||||||
|
ServiceRegistry serviceRegistry,
|
||||||
|
JdbcEnvironment jdbcEnvironment,
|
||||||
|
DdlTransactionIsolator ddlTransactionIsolator,
|
||||||
|
Identifier defaultCatalog,
|
||||||
|
Identifier defaultSchema,
|
||||||
|
ExtractionContext.DatabaseObjectAccess databaseObjectAccess);
|
||||||
|
|
||||||
|
InformationExtractor createInformationExtractor(ExtractionContext extractionContext);
|
||||||
|
}
|
|
@ -32,4 +32,6 @@ public interface SchemaManagementTool extends Service {
|
||||||
* @param generationTarget the custom instance to use.
|
* @param generationTarget the custom instance to use.
|
||||||
*/
|
*/
|
||||||
void setCustomDatabaseGenerationTarget(GenerationTarget generationTarget);
|
void setCustomDatabaseGenerationTarget(GenerationTarget generationTarget);
|
||||||
|
|
||||||
|
ExtractionTool getExtractionTool();
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,7 +19,7 @@ import org.junit.Assert;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests if bytebuddy instrumentation is done with the proper classloader for entities with proxy class. The classloader
|
* Tests if instrumentation is done with the proper classloader for entities with proxy class. The classloader
|
||||||
* of {@link HibernateProxy} will not see {@link IPerson}, since it is only accessible from this package. But: the
|
* of {@link HibernateProxy} will not see {@link IPerson}, since it is only accessible from this package. But: the
|
||||||
* classloader of {@link IPerson} will see {@link HibernateProxy}, so instrumentation will only work if this classloader
|
* classloader of {@link IPerson} will see {@link HibernateProxy}, so instrumentation will only work if this classloader
|
||||||
* is chosen for creating the instrumented proxy class. We need to check the class of a loaded object though, since
|
* is chosen for creating the instrumented proxy class. We need to check the class of a loaded object though, since
|
||||||
|
|
|
@ -17,6 +17,7 @@ import org.hibernate.boot.spi.MetadataImplementor;
|
||||||
import org.hibernate.cfg.Environment;
|
import org.hibernate.cfg.Environment;
|
||||||
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
import org.hibernate.engine.jdbc.connections.spi.ConnectionProvider;
|
||||||
import org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator;
|
import org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator;
|
||||||
|
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
|
||||||
import org.hibernate.engine.jdbc.spi.JdbcServices;
|
import org.hibernate.engine.jdbc.spi.JdbcServices;
|
||||||
import org.hibernate.resource.transaction.spi.DdlTransactionIsolator;
|
import org.hibernate.resource.transaction.spi.DdlTransactionIsolator;
|
||||||
import org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl;
|
import org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl;
|
||||||
|
@ -24,7 +25,9 @@ import org.hibernate.tool.schema.extract.internal.ExtractionContextImpl;
|
||||||
import org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl;
|
import org.hibernate.tool.schema.extract.internal.InformationExtractorJdbcDatabaseMetaDataImpl;
|
||||||
import org.hibernate.tool.schema.extract.spi.DatabaseInformation;
|
import org.hibernate.tool.schema.extract.spi.DatabaseInformation;
|
||||||
import org.hibernate.tool.schema.extract.spi.ExtractionContext;
|
import org.hibernate.tool.schema.extract.spi.ExtractionContext;
|
||||||
|
import org.hibernate.tool.schema.internal.exec.ImprovedExtractionContextImpl;
|
||||||
import org.hibernate.tool.schema.internal.exec.JdbcContext;
|
import org.hibernate.tool.schema.internal.exec.JdbcContext;
|
||||||
|
import org.hibernate.tool.schema.spi.SchemaManagementTool;
|
||||||
|
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
@ -122,8 +125,10 @@ public class TestExtraPhysicalTableTypes {
|
||||||
ssr,
|
ssr,
|
||||||
database.getJdbcEnvironment(),
|
database.getJdbcEnvironment(),
|
||||||
ddlTransactionIsolator,
|
ddlTransactionIsolator,
|
||||||
database.getDefaultNamespace().getName()
|
database.getDefaultNamespace().getName(),
|
||||||
|
database.getServiceRegistry().getService( SchemaManagementTool.class )
|
||||||
);
|
);
|
||||||
|
|
||||||
ExtractionContextImpl extractionContext = new ExtractionContextImpl(
|
ExtractionContextImpl extractionContext = new ExtractionContextImpl(
|
||||||
ssr,
|
ssr,
|
||||||
database.getJdbcEnvironment(),
|
database.getJdbcEnvironment(),
|
||||||
|
|
|
@ -1,83 +0,0 @@
|
||||||
/*
|
|
||||||
* Hibernate, Relational Persistence for Idiomatic Java
|
|
||||||
*
|
|
||||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
|
||||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
|
||||||
*/
|
|
||||||
package org.hibernate.test.bytecode.javassist;
|
|
||||||
import java.text.ParseException;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Steve Ebersole
|
|
||||||
*/
|
|
||||||
public class Bean {
|
|
||||||
private String someString;
|
|
||||||
private Long someLong;
|
|
||||||
private Integer someInteger;
|
|
||||||
private Date someDate;
|
|
||||||
private long somelong;
|
|
||||||
private int someint;
|
|
||||||
private Object someObject;
|
|
||||||
|
|
||||||
|
|
||||||
public String getSomeString() {
|
|
||||||
return someString;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSomeString(String someString) {
|
|
||||||
this.someString = someString;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getSomeLong() {
|
|
||||||
return someLong;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSomeLong(Long someLong) {
|
|
||||||
this.someLong = someLong;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getSomeInteger() {
|
|
||||||
return someInteger;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSomeInteger(Integer someInteger) {
|
|
||||||
this.someInteger = someInteger;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getSomeDate() {
|
|
||||||
return someDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSomeDate(Date someDate) {
|
|
||||||
this.someDate = someDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public long getSomelong() {
|
|
||||||
return somelong;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSomelong(long somelong) {
|
|
||||||
this.somelong = somelong;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getSomeint() {
|
|
||||||
return someint;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSomeint(int someint) {
|
|
||||||
this.someint = someint;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Object getSomeObject() {
|
|
||||||
return someObject;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSomeObject(Object someObject) {
|
|
||||||
this.someObject = someObject;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void throwException() throws ParseException {
|
|
||||||
throw new ParseException( "you asked for it...", 0 );
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,92 +0,0 @@
|
||||||
/*
|
|
||||||
* Hibernate, Relational Persistence for Idiomatic Java
|
|
||||||
*
|
|
||||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
|
||||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
|
||||||
*/
|
|
||||||
package org.hibernate.test.bytecode.javassist;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
import org.hibernate.property.access.internal.PropertyAccessStrategyBasicImpl;
|
|
||||||
import org.hibernate.property.access.spi.Getter;
|
|
||||||
import org.hibernate.property.access.spi.PropertyAccess;
|
|
||||||
import org.hibernate.property.access.spi.Setter;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Steve Ebersole
|
|
||||||
*/
|
|
||||||
public class BeanReflectionHelper {
|
|
||||||
|
|
||||||
public static final Object[] TEST_VALUES = new Object[] {
|
|
||||||
"hello", new Long(1), new Integer(1), new Date(), new Long(1), new Integer(1), new Object()
|
|
||||||
};
|
|
||||||
|
|
||||||
private static final String[] getterNames = new String[7];
|
|
||||||
private static final String[] setterNames = new String[7];
|
|
||||||
private static final Class[] types = new Class[7];
|
|
||||||
|
|
||||||
static {
|
|
||||||
final PropertyAccessStrategyBasicImpl propertyAccessStrategy = new PropertyAccessStrategyBasicImpl();
|
|
||||||
|
|
||||||
PropertyAccess propertyAccess = propertyAccessStrategy.buildPropertyAccess( Bean.class, "someString" );
|
|
||||||
Getter getter = propertyAccess.getGetter();
|
|
||||||
Setter setter = propertyAccess.getSetter();
|
|
||||||
getterNames[0] = getter.getMethodName();
|
|
||||||
types[0] = getter.getReturnType();
|
|
||||||
setterNames[0] = setter.getMethodName();
|
|
||||||
|
|
||||||
propertyAccess = propertyAccessStrategy.buildPropertyAccess( Bean.class, "someLong" );
|
|
||||||
getter = propertyAccess.getGetter();
|
|
||||||
setter = propertyAccess.getSetter();
|
|
||||||
getterNames[1] = getter.getMethodName();
|
|
||||||
types[1] = getter.getReturnType();
|
|
||||||
setterNames[1] = setter.getMethodName();
|
|
||||||
|
|
||||||
propertyAccess = propertyAccessStrategy.buildPropertyAccess( Bean.class, "someInteger" );
|
|
||||||
getter = propertyAccess.getGetter();
|
|
||||||
setter = propertyAccess.getSetter();
|
|
||||||
getterNames[2] = getter.getMethodName();
|
|
||||||
types[2] = getter.getReturnType();
|
|
||||||
setterNames[2] = setter.getMethodName();
|
|
||||||
|
|
||||||
propertyAccess = propertyAccessStrategy.buildPropertyAccess( Bean.class, "someDate" );
|
|
||||||
getter = propertyAccess.getGetter();
|
|
||||||
setter = propertyAccess.getSetter();
|
|
||||||
getterNames[3] = getter.getMethodName();
|
|
||||||
types[3] = getter.getReturnType();
|
|
||||||
setterNames[3] = setter.getMethodName();
|
|
||||||
|
|
||||||
propertyAccess = propertyAccessStrategy.buildPropertyAccess( Bean.class, "somelong" );
|
|
||||||
getter = propertyAccess.getGetter();
|
|
||||||
setter = propertyAccess.getSetter();
|
|
||||||
getterNames[4] = getter.getMethodName();
|
|
||||||
types[4] = getter.getReturnType();
|
|
||||||
setterNames[4] = setter.getMethodName();
|
|
||||||
|
|
||||||
propertyAccess = propertyAccessStrategy.buildPropertyAccess( Bean.class, "someint" );
|
|
||||||
getter = propertyAccess.getGetter();
|
|
||||||
setter = propertyAccess.getSetter();
|
|
||||||
getterNames[5] = getter.getMethodName();
|
|
||||||
types[5] = getter.getReturnType();
|
|
||||||
setterNames[5] = setter.getMethodName();
|
|
||||||
|
|
||||||
propertyAccess = propertyAccessStrategy.buildPropertyAccess( Bean.class, "someObject" );
|
|
||||||
getter = propertyAccess.getGetter();
|
|
||||||
setter = propertyAccess.getSetter();
|
|
||||||
getterNames[6] = getter.getMethodName();
|
|
||||||
types[6] = getter.getReturnType();
|
|
||||||
setterNames[6] = setter.getMethodName();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String[] getGetterNames() {
|
|
||||||
return getterNames;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String[] getSetterNames() {
|
|
||||||
return setterNames;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Class[] getTypes() {
|
|
||||||
return types;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
/*
|
|
||||||
* Hibernate, Relational Persistence for Idiomatic Java
|
|
||||||
*
|
|
||||||
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
|
|
||||||
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
|
|
||||||
*/
|
|
||||||
package org.hibernate.test.bytecode.javassist;
|
|
||||||
|
|
||||||
import org.hibernate.bytecode.internal.javassist.BulkAccessor;
|
|
||||||
|
|
||||||
import org.hibernate.testing.junit4.BaseUnitTestCase;
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Steve Ebersole
|
|
||||||
*/
|
|
||||||
// Extracted from org.hibernate.test.bytecode.ReflectionOptimizerTest.
|
|
||||||
// I (Yoann) don't know what this tests does, but it's definitely specific to javassist.
|
|
||||||
public class BulkAccessorTest extends BaseUnitTestCase {
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testBulkAccessorDirectly() {
|
|
||||||
BulkAccessor bulkAccessor = BulkAccessor.create(
|
|
||||||
Bean.class,
|
|
||||||
BeanReflectionHelper.getGetterNames(),
|
|
||||||
BeanReflectionHelper.getSetterNames(),
|
|
||||||
BeanReflectionHelper.getTypes()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -13,8 +13,6 @@ apply plugin: 'org.hibernate.matrix-test'
|
||||||
dependencies {
|
dependencies {
|
||||||
api project( ':hibernate-core' )
|
api project( ':hibernate-core' )
|
||||||
|
|
||||||
implementation libraries.commons_annotations
|
|
||||||
|
|
||||||
// TODO HHH-13703: get rid of this dependency
|
// TODO HHH-13703: get rid of this dependency
|
||||||
implementation libraries.dom4j
|
implementation libraries.dom4j
|
||||||
|
|
||||||
|
|
|
@ -77,7 +77,7 @@ public abstract class EntityTools {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
else if ( HibernateProxy.class.isAssignableFrom( clazz ) ) {
|
else if ( HibernateProxy.class.isAssignableFrom( clazz ) ) {
|
||||||
// Get the source class of Bytebuddy proxy instance.
|
// Get the source class of the proxy instance.
|
||||||
return (Class<T>) clazz.getSuperclass();
|
return (Class<T>) clazz.getSuperclass();
|
||||||
}
|
}
|
||||||
return clazz;
|
return clazz;
|
||||||
|
|
|
@ -30,4 +30,4 @@ module org.hibernate.orm.integrationtest.java.module.test {
|
||||||
|
|
||||||
opens org.hibernate.orm.integrationtest.java.module.test to junit;
|
opens org.hibernate.orm.integrationtest.java.module.test to junit;
|
||||||
requires junit;
|
requires junit;
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,11 +22,4 @@ sourceSets {
|
||||||
setSrcDirs( ['src/test/java','src/test/resources'] )
|
setSrcDirs( ['src/test/java','src/test/resources'] )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
testJavassist {
|
|
||||||
java {
|
|
||||||
compileClasspath += main.output + test.output
|
|
||||||
runtimeClasspath += main.output + test.output
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,7 +50,6 @@ task processPluginXml(type: Copy) {
|
||||||
+ generateMavenDependency(libraries.antlr)\
|
+ generateMavenDependency(libraries.antlr)\
|
||||||
+ generateMavenDependency(libraries.jta)\
|
+ generateMavenDependency(libraries.jta)\
|
||||||
+ generateMavenDependency(libraries.commons_annotations)\
|
+ generateMavenDependency(libraries.commons_annotations)\
|
||||||
+ generateMavenDependency(libraries.javassist)\
|
|
||||||
+ generateMavenDependency(libraries.byteBuddy)\
|
+ generateMavenDependency(libraries.byteBuddy)\
|
||||||
+ generateMavenDependency(libraries.logging)\
|
+ generateMavenDependency(libraries.logging)\
|
||||||
+ generateMavenDependency("org.hibernate:hibernate-core:" + project.version)])
|
+ generateMavenDependency("org.hibernate:hibernate-core:" + project.version)])
|
||||||
|
|
|
@ -34,7 +34,6 @@ dependencies {
|
||||||
|
|
||||||
implementation project( ':hibernate-core' )
|
implementation project( ':hibernate-core' )
|
||||||
implementation libraries.jpa
|
implementation libraries.jpa
|
||||||
implementation libraries.javassist
|
|
||||||
implementation libraries.byteBuddy
|
implementation libraries.byteBuddy
|
||||||
implementation gradleApi()
|
implementation gradleApi()
|
||||||
implementation localGroovy()
|
implementation localGroovy()
|
||||||
|
|
Loading…
Reference in New Issue