java 异步调用新增报错 = =
直接调用就没问题
Exception in threadThread-33"C org.mybatis.Spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException
###Error updating database.Cause:java.lang. Nul1PointerException
###The error may exist in com/hemu/iot/core/mapper/deviceMapper/EquipAlarmRecordMapper.java(best guess)
###Theerror may involve com.hemu.iot.core.mapper.deviceMapper.EquipAlarmRecordMapper.insert
### The error occurred while executing an update
### Cause:java.lang.Nul1PointerException
at org. mybatis.spring. MyBatisExceptionTranslator.translateExceptionIfPossible MyBatisExceptionTranslatorjaya:92)
at org. mybatis.spring. SqlSessionTemplatesSqlSessionInterceptor.invoke (SalSessionTemplate_iava:440)<1 internal cal1)
at org.mybatis.spring. SqlSessionTemplate.insert (SqlSessionTemplatejava:271)
at com.baomidou. mybatisplus.core.override. MybatisMapperMethod.execute (MybatisMapperMethod. java:60
at com. baomidou. mybatisplus.core. override. MybatisMapperProxysPlainMethodInvoker. invoke (MybatisMapperProxy.java:148
at com.baomidou. mybatisplus.core.override. MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) 十 )<1internalca11
at com. hemu. web. controller:infoAccept. InfoAcceptController.sets (InfoAcceptController iava:65)
at com. hemu, web. controller. inf oAccept. InfoAcceptControl ler, lambda sAcceptCompanyProtocol Infosso (InfoAccentController.iava:72
atjava.lang.Thread.run(Thread_iava:748
Caused by:org.apache,ibatis.exceptions. PersistenceException
#Error updatingdatabase Cause:java.lang.NullPointerExcept1on
牛##The error may exist in com/hemu/iot/core/mapper/devicelapper/EquipAlarmRecordMapper.java(best guess)
#料件The error may involve com.hemu.iot.core.mapper.deviceMapper.EquipAlarmRecordMapper.insert
##件 The error occurred while executing an update
###Cause:java.lang.Nul1PointerException
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSessionjava:199
十 at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSalSession.iava:184)<4internal calis
at org. mybatis. spring. SqlSessionTemplatesSqlSessi onInterceptor. invoke (SalSessionTemplate.java:426)
9more
Caused by:java.lang.NulIPointerException
at com. hemu. framework.security.handle.MyMetaObjectHandler.getTokenCompanyName (MyMetaObiectHandler.java:42
atcom.hemu.framework.security.handle.MyMetaObjectHandler.insertFi11(MyMetaObjectHandler.java:32
atcom.baomidou.mybatisplus.core.MybatisParameterHandler.lambda$insertFi11$O(MybatisParameterHandler.java:146
atjava.util.Optional.ifPresent(Optional.java:159
这里是不是从请求域拿了属性,开启线程后请求上下文里面的属性会置空,导致NPE
这么试试
Thread thread = new Thread() {
public void run() {
sets();
}
};
thread.start();
仅供参考:
根据您提供的信息,我猜测问题可能是由于在多线程环境下访问数据库引起的。
在第一种写法中,sets()方法直接被调用,是在主线程中执行的,因此没有出现问题。
而在第二种写法中,sets()方法被放在了一个新的线程中运行,可能会导致并发访问数据库,引发异常。
通常情况下,不建议在多线程环境下直接访问数据库。如果需要在多线程环境下访问数据库,可以考虑使用数据库连接池等技术来管理数据库连接,以避免并发访问数据库的问题。
您可以尝试将sets()方法的访问数据库的操作放在同步代码块中,或者使用线程安全的数据库连接池等方式来解决这个问题。另外,如果您需要在多线程环境下访问数据库,也可以考虑使用Spring提供的事务管理机制来确保数据的一致性。
希望这些提示能够帮助您解决问题。