繁体   English   中英

Spring Boot上下文上的Jooq CastException刷新

[英]Jooq CastException on Spring Boot context refreshed

当spring boot第一次启动时,jooq运作良好。 但是,如果我更改了代码并在刷新了Spring Boot上下文后,则陷入类强制转换异常的麻烦。 问题是在同一个类上强制转换异常。

我的启动conf是:

@Autowired
private DataSource dataSource;
public ExecuteListener exceptionTransformer() {
    return new DefaultExecuteListener() {
        private static final long serialVersionUID = 1L;
        @Override
        public void exception(ExecuteContext context) {
            SQLDialect dialect = context.configuration().dialect();
            SQLExceptionTranslator translator = (dialect != null)
                ? new SQLErrorCodeSQLExceptionTranslator(dialect.name())
                : new SQLStateSQLExceptionTranslator();
            context.exception(
                translator.translate("jOOQ", context.sql(), context.sqlException()));
        }
    };
}
@Primary
@Bean
public DefaultDSLContext dsl() {
    return new DefaultDSLContext(configuration());
}
public DataSourceConnectionProvider connectionProvider() {
    return new DataSourceConnectionProvider(new TransactionAwareDataSourceProxy(dataSource));
}
public DefaultConfiguration configuration() {
    DefaultConfiguration configuration = new DefaultConfiguration();
    configuration.set(connectionProvider());
    configuration.set(new DefaultExecuteListenerProvider(exceptionTransformer()));
    configuration.set(SQLDialect.MYSQL);
    // @formatter:off
    configuration.set(
        new Settings()
        .withExecuteLogging(true)
        .withRenderFormatted(true)
        );
    // @formatter:on
    configuration.set(SfmRecordMapperProviderFactory.newInstance().ignorePropertyNotFound().newProvider());
    return configuration;
}

查询代码是:

User user = dsl.select()
    .from(USER)
    .where(USER.USER_ID.eq(id)).fetchOneInto(User.class);

admin.domain.User是:

@Data
public class User implements Serializable {
    private static final long serialVersionUID = 1L;

    private String userId;
    @JsonIgnore
    private String pswd;
    private String name;
    private String useYn;
    private Timestamp registDatetime;
    private Timestamp updateDatetime;
}

堆栈跟踪为:

java.lang.ClassCastException: admin.domain.User cannot be cast to admin.domain.User
    at admin.dao.UserDao.getUserByIdWithRoles(UserDao.java:123)
    at admin.dao.UserDao$$FastClassBySpringCGLIB$$f7b71f39.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:747)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)
    at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89)
    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)

我怎么了

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM