Zakariyya / blog

https://zakariyya.github.io/blog/
6 stars 1 forks source link

java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer #166

Open Zakariyya opened 7 months ago

Zakariyya commented 7 months ago

java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error updating database.  Cause: java.lang.reflect.InaccessibleObjectException: Unable to make field private static final long java.lang.Number.serialVersionUID accessible: module java.base does not "opens java.lang" to unnamed module @621e28bc
### The error may exist in com/jsh/erp/system/mapper/LogMapper.java (best guess)
### The error may involve com.jsh.erp.system.mapper.LogMapper.insert-Inline
### The error occurred while setting parameters
### SQL: INSERT INTO log (user_id, model, operation, client_ip, status, content, tenant_id) VALUES (?, ?, ?, ?, ?, ?, ?)
### Cause: java.lang.reflect.InaccessibleObjectException: Unable to make field private static final long java.lang.Number.serialVersionUID accessible: module java.base does not "opens java.lang" to unnamed module @621e28bc

全网都说把 Long改为Interger 这个方案。但如果你使用了 shardingsphere 的话,得考虑跟下代码看看是不是 shardingsphere 报出的错。

解决办法是把版本升到 4.1.0+

    <dependency>
      <groupId>org.apache.shardingsphere</groupId>
      <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
      <version>4.1.0</version>
<!--      <version>4.0.0-RC2</version>-->
    </dependency>