【已解决】项目集成LCP模块,调用接口时,vo类里未接收到的参数没有初始化,为null

KOCA版本 :4.0
KOCA模块 :低码组件(功能开发)
模块版本 :4.0
场景 :通过jar包导入的方式集成lcp,启动后调用部分接口时报错,提示字段不能为空
问题 :内部出错:\r\n### Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: Column ‘created_by’ cannot be null
尝试解决方案:
报错细节 :

会出现此问题的其中一个接口位置:


调用接口是直接用postman调的

演示系统中的正常情况:


项目中保错的情况:
配置文件:因为会出现一些其他问题,所以暂时没有加这部分,不知道是否是这个的影响
顺便想问一下是怎样实现的自动初始化这部分参数的

这个创建/修改人信息是通过一个切面织入逻辑的,拦截了@CreateModify注解,然后从上下文中获取登录人信息,并向vo中设置值:


因此,触发那个SQL异常就是因为上下文中没有获取到登录人信息,而未获取到登陆人信息,就有两个原因:

  1. 未登录
  2. 关闭了koca认证系统

您截图中通过POSTMAN发送了请求,应该就是第二个情况,所以,请检查下application.yml中的配置,以下开关是否打开:

koca:
  security:
    enabled: true
1 个赞

应该不是这个原因,刚刚试了这个配置开关对这个结果都没有影响,演示项目中成功的情况这块也是设置的false

koca:
  security:
    enabled: true

我在您说的这个类里调试,我们的项目在这一行报错了,然后导致的后面没有初始化



然后就报错了

从配置开关未生效以及您打的断点来看,可能是KOCA认证模块未成功集成,您的BOOTAPP的pom依赖中是否有如下依赖:

        <dependency>
            <groupId>com.szkingdom.koca.base</groupId>
            <artifactId>koca-auth-security</artifactId>
        </dependency>

有,但我们这边和koca有关的都是本地jar包导入,这个会不会有影响

本地引用不会有影响。
您断点中可以看到从Spring上下文中获取AuthContextHolderStrategy的Bean,但获取失败了,这个类的实现类就在我说的koca-auth-security中,而您是有这个包的,那就只能是这个实现类未被装配到Spring上下文中,请再检查下是否有这个依赖:

        <dependency>
            <groupId>com.szkingdom.koca.boot</groupId>
            <artifactId>koca-boot-stater-auth</artifactId>
        </dependency>

该依赖会引入一个koca-boot-auth-autoconifgure包,这个包里有对AuthContextHolderStrategy实现类的装配逻辑

现在没有这个依赖,我引入一下试试

导入此依赖后问题解决了,十分感谢