org.springframework.dao.DataIntegrityViolationException: Could not read entity state from ResultSet : EntityKey[com.ledar.mono.domain.User#2]; SQL [n/a]; nested exception is org.hibernate.exception.DataException: Could not read entity state from ResultSet : EntityKey[com.ledar.mono.domain.User#2]
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:280)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:233)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551)
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:174)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
Caused by: java.sql.SQLDataException: Cannot determine value type from string 'NORMAL'
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:114)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:96)
at com.mysql.cj.jdbc.result.ResultSetImpl.getObject(ResultSetImpl.java:1431)
at com.mysql.cj.jdbc.result.ResultSetImpl.getInt(ResultSetImpl.java:830)
at com.mysql.cj.jdbc.result.ResultSetImpl.getInt(ResultSetImpl.java:851)
Solución: De hecho, Could not read entity state from ResultSet : EntityKey[com.ledar.mono.domain.User#2];
el significado de este pasaje es que cierto atributo de campo de su clase de entidad es inconsistente con el atributo de campo en la tabla de la base de datos.
Debe verificar esta clase y la base de datos correspondiente.
Después de la inspección, se encuentra que:
Preste atención para ver que user_status
el tipo de campo es varchar
el atributo correspondiente de la clase de entidad correspondiente es Status userStatus
el tipo de estado, que es un tipo de enumeración personalizado. Después de ejecutar el proyecto, la clase de entidad se inyectará automáticamente en la base de datos, y el tipo generado automáticamente también es varchar. Por qué se informará de un error es desconcertante. hasta que lo veas. Solución al error
Resulta que se me olvidó agregar @Enumerated(EnumType.STRING)
este enunciado. Haga que la clase de entidad y el tipo de tabla de base de datos userStatus sean inconsistentes.
Agregue los siguientes atributos de clase: