亓苏姑娘 2017-04-19 03:18 采纳率: 0%
浏览 1050

kotlin语言的Spring整合hibernate注入一个dao类 时报错

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is kotlin.UninitializedPropertyAccessException: lateinit property releaseStatusRepository has not been in

:Caused by: kotlin.UninitializedPropertyAccessException: lateinit property XXXRepository has not been initializeditialized

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-05 18:24
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题是由于Kotlin中使用了lateinitVar来初始化对象。这会导致在尝试访问这些变量之前它们尚未被初始化。

    解决方法如下:

    1. releaseStatusRepositoryUserRepository等类中的所有属性都设置为lateinitVar
    lateinit var releaseStatusRepository
    lateinit var userRepository
    
    1. 在调用这些方法时传递正确的参数,而不是使用默认值:
    releaseStatusRepository = getReleaseStatusRepository()
    userRepository = getUserRepository(releaseStatusRepository)
    

    完整的示例代码如下:

    import org.springframework.beans.factory.annotation.Autowired
    import org.springframework.stereotype.Repository
    
    @Repository
    class ReleaseStatusRepository {
    
        // Your implementation of ReleaseStatusRepository
    }
    
    @Repository
    class UserRepository(private val releaseStatusRepository: ReleaseStatusRepository) {
    
        // Your implementation of UserRepository
    }
    

    注意:上述代码中,我们创建了一个Repository接口,并且将ReleaseStatusRepositoryUserRepository作为构造函数的参数。然后,我们在主类中注入了这两个实现类。

    评论

报告相同问题?