3.0.3
使用通用枚举
数据采用同service的save方法保存, 且保存后结果正常
public class UserAuth implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "auth_id", type = IdType.AUTO)
private Integer authId;
/**
* 用户ID
*/
private Integer userId;
/**
* 认证类型
*/
private UserAuthType type;
/**
* 身份标识
*/
private String identify;
/**
* token
*/
private String token;
/**
* 创建时间
*/
private LocalDateTime createdTime;
/**
* 更新时间
*/
private LocalDateTime updatedTime;
}
public enum UserAuthType implements IEnum<String> {
PASSWORD("password"), GITHUB("github");
private String value;
UserAuthType(String value) {
this.value = value;
}
@Override
public String getValue() {
return this.value;
}
}
mybatis-plus:
mapper-locations: classpath:/mapper/*Mapper.xml
typeAliasesPackage: cn.xxx.blog.model.entity
typeEnumsPackage: cn.xxx.blog.model.entity.constant
QueryWrapper<UserAuth> authQueryWrapper = new QueryWrapper<UserAuth>()
.eq("user_id", user.getUserId())
.eq("type", UserAuthType.PASSWORD);
UserAuth userAuth = userAuthService.getOne(authQueryWrapper);
Caused by: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.result.ResultMapException: Error attempting to get column 'type' from result set. Cause: java.lang.IllegalArgumentException: No enum constant cn.xxx.blog.model.entity.constant.UserAuthType.password
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:77)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)
at com.sun.proxy.$Proxy93.selectList(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230)
at com.baomidou.mybatisplus.core.override.PageMapperMethod.executeForMany(PageMapperMethod.java:173)
at com.baomidou.mybatisplus.core.override.PageMapperMethod.execute(PageMapperMethod.java:86)
at com.baomidou.mybatisplus.core.override.PageMapperProxy.invoke(PageMapperProxy.java:64)
at com.sun.proxy.$Proxy96.selectList(Unknown Source)
at com.baomidou.mybatisplus.extension.service.impl.ServiceImpl.getOne(ServiceImpl.java:287)
at com.baomidou.mybatisplus.extension.service.IService.getOne(IService.java:205)
at com.baomidou.mybatisplus.extension.service.IService$$FastClassBySpringCGLIB$$f8525d18.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:684)
at cn.xxx.blog.service.impl.UserAuthServiceImpl$$EnhancerBySpringCGLIB$$c1d559b6.getOne(<generated>)
at cn.xxx.blog.common.security.CustomUserDetailsService.loadUserByUsername(CustomUserDetailsService.java:44)
at org.springframework.security.authentication.dao.DaoAuthenticationProvider.retrieveUser(DaoAuthenticationProvider.java:104)
... 54 more
Caused by: org.apache.ibatis.executor.result.ResultMapException: Error attempting to get column 'type' from result set. Cause: java.lang.IllegalArgumentException: No enum constant cn.xxx.blog.model.entity.constant.UserAuthType.password
at org.apache.ibatis.type.BaseTypeHandler.getResult(BaseTypeHandler.java:68)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.applyAutomaticMappings(DefaultResultSetHandler.java:520)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:401)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForSimpleResultMap(DefaultResultSetHandler.java:355)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:330)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:303)
at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:196)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:64)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49)
at com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor.intercept(PerformanceInterceptor.java:174)
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)
at com.sun.proxy.$Proxy123.query(Unknown Source)
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:326)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:83)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)
... 68 more
Caused by: java.lang.IllegalArgumentException: No enum constant cn.xxx.blog.model.entity.constant.UserAuthType.password
at java.lang.Enum.valueOf(Enum.java:238)
at org.apache.ibatis.type.EnumTypeHandler.getNullableResult(EnumTypeHandler.java:49)
at org.apache.ibatis.type.EnumTypeHandler.getNullableResult(EnumTypeHandler.java:26)
at org.apache.ibatis.type.BaseTypeHandler.getResult(BaseTypeHandler.java:66)
切换到3.0-RC3可以正常使用
你把 string 换成 integer 试试,数据库也改成 integer
typeEnumsPackage: cn.xxx.blog.model.entity.constant
枚举类是在这里?
@miemieYaho 尝试改成integer也不行
@qmdx 是的,版本降到3.0-RC3是可以正常工作的
方便的话在 github 上传一个能复现bug的项目,我这里一直正常使用没遇到你说的问题
@miemieYaho git项目地址: https://github.com/buyi998/bug.git
你的项目有几个问题:
@miemieYaho 非常感谢, 问题就是出在spring-boot-devtools身上, 移除后恢复正常。
Most helpful comment
@miemieYaho 非常感谢, 问题就是出在
spring-boot-devtools身上, 移除后恢复正常。