In a spring boot environment, when creating an entity with an elementcollection of embeddables that have an embeddable, I'm getting an error when running the application.
I encounter this error when creating a project from the spring boot archetype, and adapting it to spring boot 3.2.4, replacing javax with jakarta, and creating a simple entity structure:
Organization has many OrganizationBankAccount as ElementCollection
OrganizationBankAccount has an Embedded SwiftCode
SwiftCode contains a single String field
### Expected behavior
The blaze persistence should allow this kind of structure without crashing
### Actual behavior
java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
at org.hibernate.type.ComponentType.getCascadeStyle(ComponentType.java:564) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final]
at com.blazebit.persistence.integration.hibernate.base.HibernateJpaProvider.isOrphanRemoval(HibernateJpaProvider.java:1275) ~[blaze-persistence-integration-hibernate6-base-1.6.11.jar:1.6.11]
at com.blazebit.persistence.impl.EntityMetamodelImpl$AttributeEntry.(EntityMetamodelImpl.java:1057) ~[blaze-persistence-core-impl-jakarta-1.6.11.jar:1.6.11]
at com.blazebit.persistence.impl.EntityMetamodelImpl.collectColumnNames(EntityMetamodelImpl.java:418) ~[blaze-persistence-core-impl-jakarta-1.6.11.jar:1.6.11]
at com.blazebit.persistence.impl.EntityMetamodelImpl.collectColumnNames(EntityMetamodelImpl.java:357) ~[blaze-persistence-core-impl-jakarta-1.6.11.jar:1.6.11]
at com.blazebit.persistence.impl.EntityMetamodelImpl.collectColumnNames(EntityMetamodelImpl.java:378) ~[blaze-persistence-core-impl-jakarta-1.6.11.jar:1.6.11]
at com.blazebit.persistence.impl.EntityMetamodelImpl.(EntityMetamodelImpl.java:127) ~[blaze-persistence-core-impl-jakarta-1.6.11.jar:1.6.11]
at com.blazebit.persistence.impl.CriteriaBuilderFactoryImpl.(CriteriaBuilderFactoryImpl.java:110) ~[blaze-persistence-core-impl-jakarta-1.6.11.jar:1.6.11]
at com.blazebit.persistence.impl.CriteriaBuilderConfigurationImpl.createCriteriaBuilderFactory(CriteriaBuilderConfigurationImpl.java:2140) ~[blaze-persistence-core-impl-jakarta-1.6.11.jar:1.6.11]
at com.rmschots.blazedemo.config.BlazePersistenceConfiguration.createCriteriaBuilderFactory(BlazePersistenceConfiguration.java:48) ~[classes/:na]
at com.rmschots.blazedemo.config.BlazePersistenceConfiguration$$SpringCGLIB$$0.CGLIB$createCriteriaBuilderFactory$1() ~[classes/:na]
at com.rmschots.blazedemo.config.BlazePersistenceConfiguration$$SpringCGLIB$$FastClass$$1.invoke() ~[classes/:na]
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:258) ~[spring-core-6.1.5.jar:6.1.5]
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) ~[spring-context-6.1.5.jar:6.1.5]
at com.rmschots.blazedemo.config.BlazePersistenceConfiguration$$SpringCGLIB$$0.createCriteriaBuilderFactory() ~[classes/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:140) ~[spring-beans-6.1.5.jar:6.1.5]
debug details right before the crash:
![image](https://github.com/Blazebit/blaze-persistence/assets/2806802/3292763a-65fa-4ed9-9171-6b73bcc7b2b6)
![image](https://github.com/Blazebit/blaze-persistence/assets/2806802/83507137-d4fa-4ed6-88fc-ed15e6036a63)
### Steps to reproduce
check out my sample repo and run the application:
https://github.com/rmschots/blaze-persistence-demo
### Environment
Version: 1.6.11
JPA-Provider: Hibernate 6.4
DBMS: H2
Application Server: Spring boot 3.2.4
FYI: I had the same problem when I was using Spring 3.1 and Hibernate 6.2
Description
In a spring boot environment, when creating an entity with an elementcollection of embeddables that have an embeddable, I'm getting an error when running the application. I encounter this error when creating a project from the spring boot archetype, and adapting it to spring boot 3.2.4, replacing javax with jakarta, and creating a simple entity structure:
}
@Embeddable @Builder @NoArgsConstructor @AllArgsConstructor public class OrganizationBankAccount { @Embedded @AttributeOverride(name = "value", column = @Column(name = "swift_code")) private SwiftCode swiftCode; }
@Getter @Setter @Embeddable @ToString @EqualsAndHashCode public class SwiftCode { private String value;
}
java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1 at org.hibernate.type.ComponentType.getCascadeStyle(ComponentType.java:564) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at com.blazebit.persistence.integration.hibernate.base.HibernateJpaProvider.isOrphanRemoval(HibernateJpaProvider.java:1275) ~[blaze-persistence-integration-hibernate6-base-1.6.11.jar:1.6.11] at com.blazebit.persistence.impl.EntityMetamodelImpl$AttributeEntry.(EntityMetamodelImpl.java:1057) ~[blaze-persistence-core-impl-jakarta-1.6.11.jar:1.6.11]
at com.blazebit.persistence.impl.EntityMetamodelImpl.collectColumnNames(EntityMetamodelImpl.java:418) ~[blaze-persistence-core-impl-jakarta-1.6.11.jar:1.6.11]
at com.blazebit.persistence.impl.EntityMetamodelImpl.collectColumnNames(EntityMetamodelImpl.java:357) ~[blaze-persistence-core-impl-jakarta-1.6.11.jar:1.6.11]
at com.blazebit.persistence.impl.EntityMetamodelImpl.collectColumnNames(EntityMetamodelImpl.java:378) ~[blaze-persistence-core-impl-jakarta-1.6.11.jar:1.6.11]
at com.blazebit.persistence.impl.EntityMetamodelImpl.(EntityMetamodelImpl.java:127) ~[blaze-persistence-core-impl-jakarta-1.6.11.jar:1.6.11]
at com.blazebit.persistence.impl.CriteriaBuilderFactoryImpl.(CriteriaBuilderFactoryImpl.java:110) ~[blaze-persistence-core-impl-jakarta-1.6.11.jar:1.6.11]
at com.blazebit.persistence.impl.CriteriaBuilderConfigurationImpl.createCriteriaBuilderFactory(CriteriaBuilderConfigurationImpl.java:2140) ~[blaze-persistence-core-impl-jakarta-1.6.11.jar:1.6.11]
at com.rmschots.blazedemo.config.BlazePersistenceConfiguration.createCriteriaBuilderFactory(BlazePersistenceConfiguration.java:48) ~[classes/:na]
at com.rmschots.blazedemo.config.BlazePersistenceConfiguration$$SpringCGLIB$$0.CGLIB$createCriteriaBuilderFactory$1() ~[classes/:na]
at com.rmschots.blazedemo.config.BlazePersistenceConfiguration$$SpringCGLIB$$FastClass$$1.invoke() ~[classes/:na]
at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:258) ~[spring-core-6.1.5.jar:6.1.5]
at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) ~[spring-context-6.1.5.jar:6.1.5]
at com.rmschots.blazedemo.config.BlazePersistenceConfiguration$$SpringCGLIB$$0.createCriteriaBuilderFactory() ~[classes/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:140) ~[spring-beans-6.1.5.jar:6.1.5]