Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@
import jakarta.persistence.Id;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToMany;
import org.hibernate.cfg.JpaComplianceSettings;
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
import org.hibernate.testing.orm.junit.Jpa;
import org.hibernate.testing.orm.junit.Setting;
import org.junit.jupiter.api.Test;

import java.util.HashSet;
Expand All @@ -22,8 +24,11 @@

@Jpa(annotatedClasses =
{CascadePersistJpaTest.Parent.class,
CascadePersistJpaTest.Child.class},
jpaComplianceEnabled = true)
CascadePersistJpaTest.Child.class},
integrationSettings = {
@Setting(name = JpaComplianceSettings.JPA_COMPLIANCE, value = "true")
}
)
public class CascadePersistJpaTest {
@Test void test(EntityManagerFactoryScope scope) {
Parent p = new Parent();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,11 @@
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import org.hibernate.cfg.JpaComplianceSettings;
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
import org.hibernate.testing.orm.junit.JiraKey;
import org.hibernate.testing.orm.junit.Jpa;
import org.hibernate.testing.orm.junit.Setting;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;

Expand All @@ -25,7 +27,9 @@
JpaProxyComplianceEnabledTest.Provider.class,
JpaProxyComplianceEnabledTest.TelephoneNumber.class,
},
proxyComplianceEnabled = true
integrationSettings = {
@Setting(name = JpaComplianceSettings.JPA_PROXY_COMPLIANCE, value = "true")
}
)
@JiraKey("HHH-19476")
public class JpaProxyComplianceEnabledTest {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@
*/
package org.hibernate.orm.test.jpa.compliance;

import org.hibernate.cfg.JpaComplianceSettings;
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
import org.hibernate.testing.orm.junit.Jpa;
import org.hibernate.testing.orm.junit.Setting;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

Expand All @@ -21,7 +23,7 @@

@Jpa(
annotatedClasses = CriteriaDeleteTest.Person.class,
jpaComplianceEnabled = true
integrationSettings = {@Setting(name = JpaComplianceSettings.JPA_COMPLIANCE, value = "true")}
)
public class CriteriaDeleteTest {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@

import java.util.List;

import org.hibernate.cfg.JpaComplianceSettings;
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
import org.hibernate.testing.orm.junit.JiraKey;
import org.hibernate.testing.orm.junit.Jpa;
import org.hibernate.testing.orm.junit.Setting;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
Expand Down Expand Up @@ -49,8 +51,7 @@ public void tearDown(EntityManagerFactoryScope scope) {
}

@Jpa(
annotatedClasses = {Wall.class},
jpaComplianceEnabled = false
annotatedClasses = {Wall.class}
)
@Test
public void testNegatedPredicate(EntityManagerFactoryScope scope) {
Expand All @@ -75,8 +76,7 @@ public void testNegatedPredicate(EntityManagerFactoryScope scope) {
}

@Jpa(
annotatedClasses = {Wall.class},
jpaComplianceEnabled = false
annotatedClasses = {Wall.class}
)
@Test
public void testDoubleNegatedPredicate(EntityManagerFactoryScope scope) {
Expand Down Expand Up @@ -106,7 +106,7 @@ public void testDoubleNegatedPredicate(EntityManagerFactoryScope scope) {

@Jpa(
annotatedClasses = {Wall.class},
jpaComplianceEnabled = true
integrationSettings = {@Setting(name = JpaComplianceSettings.JPA_COMPLIANCE, value = "true")}
)
@Test
public void testJpaCompliantNegatedPredicate(EntityManagerFactoryScope scope) {
Expand All @@ -132,7 +132,7 @@ public void testJpaCompliantNegatedPredicate(EntityManagerFactoryScope scope) {

@Jpa(
annotatedClasses = {Wall.class},
jpaComplianceEnabled = true
integrationSettings = {@Setting(name = JpaComplianceSettings.JPA_COMPLIANCE, value = "true")}
)
@Test
public void testJpaCompliantDoubleNegatedPredicate(EntityManagerFactoryScope scope) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@
*/
package org.hibernate.orm.test.jpa.emops;

import org.hibernate.cfg.JpaComplianceSettings;
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
import org.hibernate.testing.orm.junit.Jpa;
import org.hibernate.testing.orm.junit.Setting;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.fail;
Expand All @@ -20,7 +22,7 @@
Race.class,
Mail.class
},
loadByIdComplianceEnabled = true
integrationSettings = {@Setting(name = JpaComplianceSettings.JPA_LOAD_BY_ID_COMPLIANCE, value = "true")}
)
public class GetReferenceTest {
@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,8 @@ public static Map<String, Object> getIntegrationSettings(Object testScope, Exten
private static void collectProperties(PersistenceUnitInfoImpl pui, Jpa jpa) {
final Properties properties = pui.getProperties();
properties.putAll( Environment.getProperties() );
// JpaCompliance
setJpaComplianceProperties( properties, jpa );
// JpaCompliance, default to false, can be overridden in the integrationSettings
properties.put( AvailableSettings.JPA_COMPLIANCE, "false" );
for ( Setting property : jpa.properties() ) {
properties.setProperty( property.name(), property.value() );
}
Expand Down Expand Up @@ -208,18 +208,6 @@ private static void setupStatementInspector(Jpa jpa, Map<String, Object> integra
}
}

private static void setJpaComplianceProperties(Properties properties, Jpa jpa) {
properties.put( AvailableSettings.JPA_COMPLIANCE, jpa.jpaComplianceEnabled() );
properties.put( AvailableSettings.JPA_QUERY_COMPLIANCE, jpa.queryComplianceEnabled() );
properties.put( AvailableSettings.JPA_TRANSACTION_COMPLIANCE, jpa.transactionComplianceEnabled() );
properties.put( AvailableSettings.JPA_CLOSED_COMPLIANCE, jpa.closedComplianceEnabled() );
properties.put( AvailableSettings.JPA_PROXY_COMPLIANCE, jpa.proxyComplianceEnabled() );
properties.put( AvailableSettings.JPA_CACHING_COMPLIANCE, jpa.cacheComplianceEnabled() );
properties.put( AvailableSettings.JPA_ID_GENERATOR_GLOBAL_SCOPE_COMPLIANCE, jpa.generatorScopeComplianceEnabled() );
properties.put( AvailableSettings.JPA_ORDER_BY_MAPPING_COMPLIANCE, jpa.orderByMappingComplianceEnabled() );
properties.put( AvailableSettings.JPA_LOAD_BY_ID_COMPLIANCE, jpa.loadByIdComplianceEnabled() );
}

private static DomainModelDescriptor instantiateDomainModelDescriptor(
Class<? extends DomainModelDescriptor> modelDescriptorClass) {
// first, see if it has a static singleton reference and use that if so
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@
import jakarta.persistence.ValidationMode;
import jakarta.persistence.spi.PersistenceUnitTransactionType;

import org.hibernate.jpa.spi.JpaCompliance;

import org.hibernate.testing.jdbc.SQLStatementInspector;
import org.hibernate.testing.orm.domain.DomainModelDescriptor;
import org.hibernate.testing.orm.domain.StandardDomainModel;
Expand Down Expand Up @@ -63,51 +61,6 @@
SharedCacheMode sharedCacheMode() default SharedCacheMode.UNSPECIFIED;
ValidationMode validationMode() default ValidationMode.NONE;

/**
* @see org.hibernate.cfg.AvailableSettings#JPA_COMPLIANCE
*/
boolean jpaComplianceEnabled() default false;

/**
* @see JpaCompliance#isJpaQueryComplianceEnabled()
*/
boolean queryComplianceEnabled() default false;

/**
* @see JpaCompliance#isJpaTransactionComplianceEnabled()
*/
boolean transactionComplianceEnabled() default false;

/**
* @see JpaCompliance#isJpaClosedComplianceEnabled()
*/
boolean closedComplianceEnabled() default false;

/**
* @see JpaCompliance#isJpaOrderByMappingComplianceEnabled()
*/
boolean orderByMappingComplianceEnabled() default false;

/**
* @see JpaCompliance#isJpaProxyComplianceEnabled()
*/
boolean proxyComplianceEnabled() default false;

/**
* @see JpaCompliance#isJpaCacheComplianceEnabled()
*/
boolean cacheComplianceEnabled() default false;

/**
* @see JpaCompliance#isGlobalGeneratorScopeEnabled()
*/
boolean generatorScopeComplianceEnabled() default false;

/**
* @see JpaCompliance#isLoadByIdComplianceEnabled()
*/
boolean loadByIdComplianceEnabled() default false;

boolean excludeUnlistedClasses() default false;

StandardDomainModel[] standardModels() default {};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@

import java.util.Set;

import org.hibernate.cfg.JpaComplianceSettings;
import org.hibernate.dialect.H2Dialect;

import org.hibernate.testing.annotations.AnEntity;
import org.hibernate.testing.annotations.AnotherEntity;
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
import org.hibernate.testing.orm.junit.Jpa;
import org.hibernate.testing.orm.junit.RequiresDialect;
import org.hibernate.testing.orm.junit.Setting;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
Expand Down Expand Up @@ -46,9 +48,7 @@ public void setup(EntityManagerFactoryScope scope) {
@AfterAll
public void tearDown(EntityManagerFactoryScope scope) {
scope.inTransaction(
entityManager -> {
entityManager.createQuery( "delete from AnEntity" ).executeUpdate();
}
entityManager -> entityManager.createQuery( "delete from AnEntity" ).executeUpdate()
);
}

Expand All @@ -67,7 +67,6 @@ public void nonAnnotatedMethodTest(EntityManagerFactoryScope scope) {
Set<EntityType<?>> entities = scope.getEntityManagerFactory().getMetamodel().getEntities();
assertEquals( 1, entities.size() );
assertEquals( "AnEntity", entities.iterator().next().getName() );
assertEquals( Boolean.FALSE, scope.getEntityManagerFactory().getProperties().get( "hibernate.jpa.compliance.query" ) );
scope.inEntityManager(
entityManager -> {
AnEntity ae = entityManager.find( AnEntity.class, 1 );
Expand All @@ -80,7 +79,7 @@ public void nonAnnotatedMethodTest(EntityManagerFactoryScope scope) {

@Jpa(
annotatedClasses = AnotherEntity.class,
queryComplianceEnabled = true
integrationSettings = {@Setting(name = JpaComplianceSettings.JPA_QUERY_COMPLIANCE, value = "true")}
)
@Test
public void annotatedMethodTest(EntityManagerFactoryScope scope) {
Expand All @@ -89,7 +88,7 @@ public void annotatedMethodTest(EntityManagerFactoryScope scope) {
Set<EntityType<?>> entities = scope.getEntityManagerFactory().getMetamodel().getEntities();
assertEquals( 1, entities.size() );
assertEquals( "AnotherEntity", entities.iterator().next().getName() );
assertEquals( Boolean.TRUE, scope.getEntityManagerFactory().getProperties().get( "hibernate.jpa.compliance.query" ) );
assertEquals( "true", scope.getEntityManagerFactory().getProperties().get( "hibernate.jpa.compliance.query" ) );
scope.inTransaction(
entityManager -> {
AnotherEntity aoe = new AnotherEntity( 2, "AnotherEntity_1" );
Expand All @@ -107,9 +106,7 @@ public void annotatedMethodTest(EntityManagerFactoryScope scope) {
Assertions.assertThrows(
IllegalArgumentException.class,
() -> scope.inTransaction(
entityManager -> {
AnEntity ae = entityManager.find( AnEntity.class, 1 );
}
entityManager -> entityManager.find( AnEntity.class, 1 )
)
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@

import java.util.Set;

import org.hibernate.cfg.JpaComplianceSettings;
import org.hibernate.dialect.H2Dialect;

import org.hibernate.testing.annotations.AnEntity;
import org.hibernate.testing.annotations.AnotherEntity;
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
import org.hibernate.testing.orm.junit.Jpa;
import org.hibernate.testing.orm.junit.RequiresDialect;
import org.hibernate.testing.orm.junit.Setting;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

Expand Down Expand Up @@ -43,7 +45,7 @@ public void testBasicUsage(EntityManagerFactoryScope scope) {

@Jpa(
annotatedClasses = AnotherEntity.class,
queryComplianceEnabled = true
integrationSettings = {@Setting(name = JpaComplianceSettings.JPA_QUERY_COMPLIANCE, value = "true")}
)
@Test
public void annotatedMethodTest(EntityManagerFactoryScope scope) {
Expand All @@ -52,7 +54,7 @@ public void annotatedMethodTest(EntityManagerFactoryScope scope) {
Set<EntityType<?>> entities = scope.getEntityManagerFactory().getMetamodel().getEntities();
assertEquals( 1, entities.size() );
assertEquals( "AnotherEntity", entities.iterator().next().getName() );
assertEquals( Boolean.TRUE, scope.getEntityManagerFactory().getProperties().get( "hibernate.jpa.compliance.query" ) );
assertEquals( "true", scope.getEntityManagerFactory().getProperties().get( "hibernate.jpa.compliance.query" ) );
scope.inTransaction(
entityManager -> {
AnotherEntity aoe = new AnotherEntity( 2, "AnotherEntity_1" );
Expand All @@ -70,9 +72,7 @@ public void annotatedMethodTest(EntityManagerFactoryScope scope) {
Assertions.assertThrows(
IllegalArgumentException.class,
() -> scope.inTransaction(
entityManager -> {
AnEntity ae = entityManager.find( AnEntity.class, 1 );
}
entityManager -> entityManager.find( AnEntity.class, 1 )
)
);
}
Expand Down
33 changes: 33 additions & 0 deletions migration-guide.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,39 @@ See the link:{releaseSeriesBase}#whats-new[website] for the list of new features

This section describes changes to contracts (classes, interfaces, methods, etc.) which are considered https://hibernate.org/community/compatibility-policy/#api[API].

[[jpa]]
=== @Jpa (hibernate-testing)

The following methods have been removed from the `@Jpa` test utility, located in the hibernate-testing project:

- `jpaComplianceEnabled()`
- `queryComplianceEnabled()`
- `transactionComplianceEnabled()`
- `closedComplianceEnabled()`
- `orderByMappingComplianceEnabled()`
- `proxyComplianceEnabled()`
- `cacheComplianceEnabled()`
- `generatorScopeComplianceEnabled()`
- `loadByIdComplianceEnabled()`

The default value for these settings is still `false`.

To indicate a specific flag setting, or to override the generic value that was set with `JpaComplianceSettings.JPA_COMPLIANCE`, `@Jpa` 's `integrationSettings` array should be used.

Example:

```
@Jpa(annotatedClasses =
...,
integrationSettings = {
// set all jpa compliance flags to true
@Setting(name = JpaComplianceSettings.JPA_COMPLIANCE, value = "true"),
// override or set a specific flag value to false
@Setting(name = JpaComplianceSettings.JPA_PROXY_COMPLIANCE, value = "false")
}
)
```


// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// SPI changes
Expand Down
Loading