-
Notifications
You must be signed in to change notification settings - Fork 27
Open
Description
I'm using jmolecules-integrations to build my demo, and i want to use long as the identifier of my aggregate, but my app can't start because of this exception:
org.springframework.orm.jpa.JpaSystemException: Error attempting to apply AttributeConverter: Unable to find identifier field on class com.zack.jmoelculesdemo.customer.Customer$CustomerId!
at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:405)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:246)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:560)
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:343)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:160)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:136)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:223)
at jdk.proxy2/jdk.proxy2.$Proxy149.findAllByCustomer(Unknown Source)
at com.zack.jmoelculesdemo.JMoleculesDemoApplicationTests.findAllByCustomerId(JMoleculesDemoApplicationTests.java:42)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
Caused by: jakarta.persistence.PersistenceException: Error attempting to apply AttributeConverter: Unable to find identifier field on class com.zack.jmoelculesdemo.customer.Customer$CustomerId!
at org.hibernate.type.descriptor.converter.internal.JpaAttributeConverterImpl.toRelationalValue(JpaAttributeConverterImpl.java:106)
at org.hibernate.query.sqm.internal.SqmUtil.createJdbcParameterBindings(SqmUtil.java:656)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.buildCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:493)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.withCacheableSqmInterpretation(ConcreteSqmSelectQueryPlan.java:388)
at org.hibernate.query.sqm.internal.ConcreteSqmSelectQueryPlan.performList(ConcreteSqmSelectQueryPlan.java:362)
at org.hibernate.query.sqm.internal.QuerySqmImpl.doList(QuerySqmImpl.java:380)
at org.hibernate.query.spi.AbstractSelectionQuery.list(AbstractSelectionQuery.java:143)
at org.hibernate.query.Query.getResultList(Query.java:120)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:419)
at jdk.proxy2/jdk.proxy2.$Proxy180.getResultList(Unknown Source)
at org.springframework.data.jpa.repository.query.JpaQueryExecution$CollectionExecution.doExecute(JpaQueryExecution.java:130)
at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:93)
at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:152)
at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:140)
at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:170)
at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:158)
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:170)
at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:149)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:69)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:138)
... 9 more
Caused by: java.lang.IllegalStateException: Unable to find identifier field on class com.zack.jmoelculesdemo.customer.Customer$CustomerId!
at org.jmolecules.spring.IdentifierToPrimitivesConverter.lambda$convert$3(IdentifierToPrimitivesConverter.java:108)
at java.base/java.util.Optional.orElseThrow(Optional.java:403)
at org.jmolecules.spring.IdentifierToPrimitivesConverter.convert(IdentifierToPrimitivesConverter.java:108)
at org.jmolecules.spring.AssociationToPrimitivesConverter.convert(AssociationToPrimitivesConverter.java:105)
at org.jmolecules.spring.jpa.JakartaPersistenceAssociationAttributeConverter.convertToDatabaseColumn(JakartaPersistenceAssociationAttributeConverter.java:50)
at org.jmolecules.spring.jpa.JakartaPersistenceAssociationAttributeConverter.convertToDatabaseColumn(JakartaPersistenceAssociationAttributeConverter.java:30)
at org.hibernate.type.descriptor.converter.internal.JpaAttributeConverterImpl.toRelationalValue(JpaAttributeConverterImpl.java:100)
... 37 more
And i believe it's caused by org.jmolecules.spring.IdentifierToPrimitivesConverter and org.jmolecules.spring.PrimitivesToIdentifierConverter not support Number type.
So my question is how to extends IdentifierToPrimitivesConverter to support Number Identifier.
Here is my demo repo: demo repo
Metadata
Metadata
Assignees
Labels
No labels