[No se pudo leer el estado de la entidad de ResultSet] Solucione el error

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_statusel tipo de campo es varchar
inserte la descripción de la imagen aquí
el atributo correspondiente de la clase de entidad correspondiente es Status userStatusel 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
inserte la descripción de la imagen aquí
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:
inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_45486709/article/details/123455342
Recomendado
Clasificación