diff --git a/orm/hibernate-orm-6/src/test/java/org/hibernate/bugs/QuarkusLikeEnhancementContext.java b/orm/hibernate-orm-6/src/test/java/org/hibernate/bugs/QuarkusLikeEnhancementContext.java new file mode 100644 index 00000000..9d9e2d6e --- /dev/null +++ b/orm/hibernate-orm-6/src/test/java/org/hibernate/bugs/QuarkusLikeEnhancementContext.java @@ -0,0 +1,26 @@ +package org.hibernate.bugs; + +import org.hibernate.bytecode.enhance.spi.DefaultEnhancementContext; +import org.hibernate.bytecode.enhance.spi.UnloadedField; +import org.hibernate.bytecode.enhance.spi.UnsupportedEnhancementStrategy; + +public class QuarkusLikeEnhancementContext extends DefaultEnhancementContext { + @Override + public boolean doBiDirectionalAssociationManagement(final UnloadedField field) { + //Don't enable automatic association management as it's often too surprising. + //Also, there's several cases in which its semantics are of unspecified, + //such as what should happen when dealing with ordered collections. + return false; + } + + @Override + public UnsupportedEnhancementStrategy getUnsupportedEnhancementStrategy() { + // We expect model classes to be enhanced. + // Lack of enhancement could lead to many problems, + // from bad performance, to Quarkus-specific optimizations causing errors/data loss, + // to incorrect generated bytecode (references to non-existing methods). + // If something prevents enhancement, it's just safer to have Hibernate ORM's enhancer fail + // with a clear error message pointing to the application class that needs to be fixed. + return UnsupportedEnhancementStrategy.FAIL; + } +} diff --git a/orm/hibernate-orm-6/src/test/java/org/hibernate/bugs/QuarkusLikeORMUnitTestCase.java b/orm/hibernate-orm-6/src/test/java/org/hibernate/bugs/QuarkusLikeORMUnitTestCase.java index f96bffd4..b0f5fdd1 100644 --- a/orm/hibernate-orm-6/src/test/java/org/hibernate/bugs/QuarkusLikeORMUnitTestCase.java +++ b/orm/hibernate-orm-6/src/test/java/org/hibernate/bugs/QuarkusLikeORMUnitTestCase.java @@ -17,6 +17,7 @@ import org.hibernate.cfg.AvailableSettings; +import org.hibernate.testing.bytecode.enhancement.CustomEnhancementContext; import org.hibernate.testing.bytecode.enhancement.extension.BytecodeEnhanced; import org.hibernate.testing.orm.junit.DomainModel; import org.hibernate.testing.orm.junit.ServiceRegistry; @@ -61,6 +62,7 @@ ) @SessionFactory @BytecodeEnhanced +@CustomEnhancementContext(QuarkusLikeEnhancementContext.class) class QuarkusLikeORMUnitTestCase { // Add your tests, using standard JUnit.