Remove 'statementInspectorClass' from @Jpa and refactor its usage to use
a @SettingProvider Signed-off-by: Jan Schatteman <jschatte@redhat.com>
This commit is contained in:
parent
cc43aaefb9
commit
ce6850bdfa
|
@ -25,6 +25,7 @@ import org.hibernate.resource.jdbc.spi.StatementInspector;
|
|||
|
||||
import org.hibernate.testing.TestForIssue;
|
||||
import org.hibernate.testing.jdbc.SQLStatementInspector;
|
||||
import org.hibernate.testing.orm.jdbc.DefaultSQLStatementInspectorSettingProvider;
|
||||
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
|
||||
import org.hibernate.testing.orm.junit.Jpa;
|
||||
import org.hibernate.testing.orm.junit.RequiresDialect;
|
||||
|
@ -48,7 +49,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
|
|||
settingProviders = {
|
||||
@SettingProvider(
|
||||
settingName = AvailableSettings.STATEMENT_INSPECTOR,
|
||||
provider = NamedQueryCommentTest.StatementInspectorSettingProvider.class
|
||||
provider = DefaultSQLStatementInspectorSettingProvider.class
|
||||
)
|
||||
}
|
||||
)
|
||||
|
@ -61,6 +62,9 @@ public class NamedQueryCommentTest {
|
|||
|
||||
@BeforeAll
|
||||
public void setUp(EntityManagerFactoryScope scope) {
|
||||
|
||||
statementInspector = scope.getStatementInspector( SQLStatementInspector.class );
|
||||
|
||||
scope.inTransaction(
|
||||
entityManager -> {
|
||||
for ( String title : GAME_TITLES ) {
|
||||
|
@ -292,11 +296,4 @@ public class NamedQueryCommentTest {
|
|||
}
|
||||
}
|
||||
|
||||
public static class StatementInspectorSettingProvider implements SettingProvider.Provider<StatementInspector> {
|
||||
@Override
|
||||
public StatementInspector getSetting() {
|
||||
statementInspector = new SQLStatementInspector();
|
||||
return statementInspector;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,15 +8,14 @@ package org.hibernate.orm.test.mapping.onetoone;
|
|||
|
||||
import jakarta.persistence.CascadeType;
|
||||
import jakarta.persistence.Entity;
|
||||
import jakarta.persistence.EntityManagerFactory;
|
||||
import jakarta.persistence.Id;
|
||||
import jakarta.persistence.JoinColumn;
|
||||
import jakarta.persistence.MapsId;
|
||||
import jakarta.persistence.OneToOne;
|
||||
|
||||
import org.hibernate.SessionFactory;
|
||||
import org.hibernate.cfg.AvailableSettings;
|
||||
|
||||
import org.hibernate.testing.orm.jdbc.DefaultSQLStatementInspectorSettingProvider;
|
||||
import org.hibernate.testing.jdbc.SQLStatementInspector;
|
||||
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
|
||||
import org.hibernate.testing.orm.junit.Jpa;
|
||||
|
@ -37,19 +36,12 @@ import static org.junit.jupiter.api.Assertions.assertSame;
|
|||
settingProviders = {
|
||||
@SettingProvider(
|
||||
settingName = AvailableSettings.STATEMENT_INSPECTOR,
|
||||
provider = OneToOneMapsIdJoinColumnTest.SQLStatementInspectorProvider.class
|
||||
provider = DefaultSQLStatementInspectorSettingProvider.class
|
||||
)
|
||||
}
|
||||
)
|
||||
public class OneToOneMapsIdJoinColumnTest {
|
||||
|
||||
public static class SQLStatementInspectorProvider implements SettingProvider.Provider<Class> {
|
||||
@Override
|
||||
public Class getSetting() {
|
||||
return SQLStatementInspector.class;
|
||||
}
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
public void setUp(EntityManagerFactoryScope scope) {
|
||||
scope.inTransaction( entityManager -> {
|
||||
|
@ -67,7 +59,7 @@ public class OneToOneMapsIdJoinColumnTest {
|
|||
|
||||
@Test
|
||||
public void testLifecycle(EntityManagerFactoryScope scope) {
|
||||
SQLStatementInspector statementInspector = getSqlStatementInspector( scope );
|
||||
SQLStatementInspector statementInspector = scope.getStatementInspector( SQLStatementInspector.class );
|
||||
|
||||
statementInspector.clear();
|
||||
scope.inTransaction( entityManager -> {
|
||||
|
@ -85,12 +77,6 @@ public class OneToOneMapsIdJoinColumnTest {
|
|||
} );
|
||||
}
|
||||
|
||||
private SQLStatementInspector getSqlStatementInspector(EntityManagerFactoryScope scope) {
|
||||
EntityManagerFactory entityManagerFactory = scope.getEntityManagerFactory();
|
||||
SessionFactory sessionFactory = entityManagerFactory.unwrap( SessionFactory.class );
|
||||
return (SQLStatementInspector) sessionFactory.getSessionFactoryOptions().getStatementInspector();
|
||||
}
|
||||
|
||||
@Entity(name = "Person")
|
||||
public static class Person {
|
||||
|
||||
|
|
|
@ -13,9 +13,11 @@ import org.hibernate.cfg.AvailableSettings;
|
|||
|
||||
import org.hibernate.testing.TestForIssue;
|
||||
import org.hibernate.testing.jdbc.SQLStatementInspector;
|
||||
import org.hibernate.testing.orm.jdbc.DefaultSQLStatementInspectorSettingProvider;
|
||||
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
|
||||
import org.hibernate.testing.orm.junit.Jpa;
|
||||
import org.hibernate.testing.orm.junit.Setting;
|
||||
import org.hibernate.testing.orm.junit.SettingProvider;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
|
@ -30,7 +32,6 @@ import jakarta.persistence.criteria.Root;
|
|||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
|
||||
/**
|
||||
* @author Vlad Mihalcea
|
||||
*/
|
||||
|
@ -41,7 +42,12 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
|
|||
@Setting(name = AvailableSettings.USE_SQL_COMMENTS, value = "true"),
|
||||
@Setting(name = AvailableSettings.IN_CLAUSE_PARAMETER_PADDING, value = "true"),
|
||||
},
|
||||
statementInspectorClass = SQLStatementInspector.class
|
||||
settingProviders = {
|
||||
@SettingProvider(
|
||||
settingName = AvailableSettings.STATEMENT_INSPECTOR,
|
||||
provider = DefaultSQLStatementInspectorSettingProvider.class
|
||||
)
|
||||
}
|
||||
)
|
||||
public class InClauseParameterPaddingCriteriaTest {
|
||||
|
||||
|
@ -56,7 +62,7 @@ public class InClauseParameterPaddingCriteriaTest {
|
|||
|
||||
@Test
|
||||
public void testInClauseParameterPadding(EntityManagerFactoryScope scope) {
|
||||
final SQLStatementInspector statementInspector = (SQLStatementInspector) scope.getStatementInspector();
|
||||
final SQLStatementInspector statementInspector = scope.getStatementInspector( SQLStatementInspector.class );
|
||||
statementInspector.clear();
|
||||
|
||||
scope.inTransaction( entityManager -> {
|
||||
|
@ -80,7 +86,7 @@ public class InClauseParameterPaddingCriteriaTest {
|
|||
|
||||
@Test
|
||||
public void testInClauseParameterPaddingForExpressions(EntityManagerFactoryScope scope) {
|
||||
final SQLStatementInspector statementInspector = (SQLStatementInspector) scope.getStatementInspector();
|
||||
final SQLStatementInspector statementInspector = scope.getStatementInspector( SQLStatementInspector.class );
|
||||
statementInspector.clear();
|
||||
|
||||
scope.inTransaction( entityManager -> {
|
||||
|
|
|
@ -12,9 +12,11 @@ import org.hibernate.cfg.AvailableSettings;
|
|||
|
||||
import org.hibernate.testing.TestForIssue;
|
||||
import org.hibernate.testing.jdbc.SQLStatementInspector;
|
||||
import org.hibernate.testing.orm.jdbc.DefaultSQLStatementInspectorSettingProvider;
|
||||
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
|
||||
import org.hibernate.testing.orm.junit.Jpa;
|
||||
import org.hibernate.testing.orm.junit.Setting;
|
||||
import org.hibernate.testing.orm.junit.SettingProvider;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
|
@ -34,8 +36,12 @@ import static org.junit.Assert.assertTrue;
|
|||
@Setting(name = AvailableSettings.USE_SQL_COMMENTS, value = "true"),
|
||||
@Setting(name = AvailableSettings.IN_CLAUSE_PARAMETER_PADDING, value = "true")
|
||||
},
|
||||
statementInspectorClass = SQLStatementInspector.class
|
||||
|
||||
settingProviders = {
|
||||
@SettingProvider(
|
||||
settingName = AvailableSettings.STATEMENT_INSPECTOR,
|
||||
provider = DefaultSQLStatementInspectorSettingProvider.class
|
||||
)
|
||||
}
|
||||
)
|
||||
public class InClauseParameterPaddingTest {
|
||||
|
||||
|
@ -70,7 +76,7 @@ public class InClauseParameterPaddingTest {
|
|||
EntityManagerFactoryScope scope,
|
||||
String expectedInClause,
|
||||
Integer... ids) {
|
||||
final SQLStatementInspector sqlStatementInterceptor = (SQLStatementInspector) scope.getStatementInspector();
|
||||
final SQLStatementInspector sqlStatementInterceptor = scope.getStatementInspector( SQLStatementInspector.class );
|
||||
sqlStatementInterceptor.clear();
|
||||
|
||||
scope.inTransaction( entityManager -> {
|
||||
|
|
|
@ -14,6 +14,7 @@ import org.hibernate.dialect.H2Dialect;
|
|||
|
||||
import org.hibernate.testing.TestForIssue;
|
||||
import org.hibernate.testing.jdbc.SQLStatementInspector;
|
||||
import org.hibernate.testing.orm.jdbc.DefaultSQLStatementInspectorSettingProvider;
|
||||
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
|
||||
import org.hibernate.testing.orm.junit.Jpa;
|
||||
import org.hibernate.testing.orm.junit.RequiresDialect;
|
||||
|
@ -43,8 +44,11 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
|
|||
settingName = AvailableSettings.DIALECT,
|
||||
provider = MaxInExpressionParameterPaddingTest.DialectProvider.class
|
||||
),
|
||||
},
|
||||
statementInspectorClass = SQLStatementInspector.class
|
||||
@SettingProvider(
|
||||
settingName = AvailableSettings.STATEMENT_INSPECTOR,
|
||||
provider = DefaultSQLStatementInspectorSettingProvider.class
|
||||
)
|
||||
}
|
||||
)
|
||||
public class MaxInExpressionParameterPaddingTest {
|
||||
|
||||
|
@ -72,7 +76,7 @@ public class MaxInExpressionParameterPaddingTest {
|
|||
|
||||
@Test
|
||||
public void testInClauseParameterPadding(EntityManagerFactoryScope scope) {
|
||||
final SQLStatementInspector statementInspector = (SQLStatementInspector) scope.getStatementInspector();
|
||||
final SQLStatementInspector statementInspector = scope.getStatementInspector( SQLStatementInspector.class );
|
||||
statementInspector.clear();
|
||||
|
||||
scope.inTransaction( entityManager ->
|
||||
|
@ -94,7 +98,7 @@ public class MaxInExpressionParameterPaddingTest {
|
|||
@TestForIssue(jiraKey = "HHH-14109")
|
||||
@Test
|
||||
public void testInClauseParameterPaddingToLimit(EntityManagerFactoryScope scope) {
|
||||
final SQLStatementInspector statementInspector = (SQLStatementInspector) scope.getStatementInspector();
|
||||
final SQLStatementInspector statementInspector = scope.getStatementInspector( SQLStatementInspector.class );
|
||||
statementInspector.clear();
|
||||
|
||||
scope.inTransaction(
|
||||
|
@ -119,7 +123,7 @@ public class MaxInExpressionParameterPaddingTest {
|
|||
|
||||
@Test
|
||||
public void testInClauseParameterSplittingAfterLimit(EntityManagerFactoryScope scope) {
|
||||
final SQLStatementInspector statementInspector = (SQLStatementInspector) scope.getStatementInspector();
|
||||
final SQLStatementInspector statementInspector = scope.getStatementInspector( SQLStatementInspector.class );
|
||||
statementInspector.clear();
|
||||
|
||||
scope.inTransaction(
|
||||
|
@ -145,7 +149,7 @@ public class MaxInExpressionParameterPaddingTest {
|
|||
|
||||
@Test
|
||||
public void testInClauseParameterSplittingAfterLimit2(EntityManagerFactoryScope scope) {
|
||||
final SQLStatementInspector statementInspector = (SQLStatementInspector) scope.getStatementInspector();
|
||||
final SQLStatementInspector statementInspector = scope.getStatementInspector( SQLStatementInspector.class );
|
||||
statementInspector.clear();
|
||||
|
||||
scope.inTransaction(
|
||||
|
@ -171,7 +175,7 @@ public class MaxInExpressionParameterPaddingTest {
|
|||
|
||||
@Test
|
||||
public void testInClauseParameterSplittingAfterLimit3(EntityManagerFactoryScope scope) {
|
||||
final SQLStatementInspector statementInspector = (SQLStatementInspector) scope.getStatementInspector();
|
||||
final SQLStatementInspector statementInspector = scope.getStatementInspector( SQLStatementInspector.class );
|
||||
statementInspector.clear();
|
||||
|
||||
scope.inTransaction(
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* 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.testing.orm.jdbc;
|
||||
|
||||
import org.hibernate.testing.jdbc.SQLStatementInspector;
|
||||
import org.hibernate.testing.orm.junit.SettingProvider;
|
||||
|
||||
public class DefaultSQLStatementInspectorSettingProvider implements SettingProvider.Provider<SQLStatementInspector> {
|
||||
|
||||
@Override
|
||||
public SQLStatementInspector getSetting() {
|
||||
return new SQLStatementInspector();
|
||||
}
|
||||
}
|
|
@ -49,6 +49,12 @@ abstract class AbstractEntityManagerFactoryScope implements EntityManagerFactory
|
|||
.getStatementInspector();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T extends StatementInspector> T getStatementInspector(Class<T> type) {
|
||||
//noinspection unchecked
|
||||
return (T) getStatementInspector();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
if ( !active ) {
|
||||
|
|
|
@ -99,9 +99,6 @@ public class EntityManagerFactoryExtension
|
|||
pui.getProperties().put( AvailableSettings.JPA_ID_GENERATOR_GLOBAL_SCOPE_COMPLIANCE, emfAnn.generatorScopeComplianceEnabled() );
|
||||
pui.getProperties().put( AvailableSettings.JPA_ORDER_BY_MAPPING_COMPLIANCE, emfAnn.orderByMappingComplianceEnabled() );
|
||||
pui.getProperties().put( AvailableSettings.JPA_LOAD_BY_ID_COMPLIANCE, emfAnn.loadByIdComplianceEnabled() );
|
||||
if ( !emfAnn.statementInspectorClass().equals( StatementInspector.class ) ) {
|
||||
pui.getProperties().put( AvailableSettings.STATEMENT_INSPECTOR, emfAnn.statementInspectorClass() );
|
||||
}
|
||||
|
||||
final Setting[] properties = emfAnn.properties();
|
||||
for ( int i = 0; i < properties.length; i++ ) {
|
||||
|
|
|
@ -19,7 +19,9 @@ import org.hibernate.resource.jdbc.spi.StatementInspector;
|
|||
public interface EntityManagerFactoryScope {
|
||||
EntityManagerFactory getEntityManagerFactory();
|
||||
void releaseEntityManagerFactory();
|
||||
|
||||
StatementInspector getStatementInspector();
|
||||
<T extends StatementInspector> T getStatementInspector(Class<T> type);
|
||||
|
||||
void inEntityManager(Consumer<EntityManager> action);
|
||||
void inTransaction(Consumer<EntityManager> action);
|
||||
|
|
|
@ -108,8 +108,6 @@ public @interface Jpa {
|
|||
*/
|
||||
boolean loadByIdComplianceEnabled() default false;
|
||||
|
||||
Class<? extends StatementInspector> statementInspectorClass() default StatementInspector.class;
|
||||
|
||||
boolean excludeUnlistedClasses() default false;
|
||||
|
||||
StandardDomainModel[] standardModels() default {};
|
||||
|
|
Loading…
Reference in New Issue