小编Uji*_*Ukr的帖子

如何使用 Kodein 进行注射?

我刚刚学习了kodein lib用于依赖注入。我如何获取变量的依赖值?下面是我的应用程序类,我将上下文与 kodein 绑定:

class BaseApp : Application(), KodeinAware {
    override val kodein by Kodein.lazy {
        import(contextModule)
    }

    private val contextModule = Kodein.Module(CONTEXT_MODULE_TAG){
        bind<Context>(CONTEXT_TAG) with provider { this@BaseApp }
    }

    companion object{
        private const val CONTEXT_MODULE_TAG = "context_module"
        const val CONTEXT_TAG = "context_tag"
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的存储库类中,我尝试获取上下文,但没有成功。

class BatteryRepository : KodeinAware {
    override val kodein by kodein()
    private val context by instance<Context>(BaseApp.CONTEXT_TAG)
...
Run Code Online (Sandbox Code Playgroud)

其中kodein()方法调用错误:

表达式“kodein”不能作为函数调用。找不到函数“invoke()”

我如何获取上下文?像这样转移上下文是个好主意吗?

android kotlin kodein

3
推荐指数
1
解决办法
4074
查看次数

JPA 检查查询是否为空

我使用JPA这样的数据库查询:

@Query("SELECT " +
        "new Report(" +
        "sum (r.fraction1)," +
        "sum (r.fraction2)) from Report r")
Report calculateTotalReports();
Run Code Online (Sandbox Code Playgroud)

当数据库已满时,它可以正常工作,但是当数据库为空时,应用程序就会崩溃。我如何检查表何时包含行然后选择总和?我尝试使用CASE WHEN ... THEN,但JPA没有提供它。

崩溃日志:

QueryException:无法从元组实例化类 [com.statistic.server.entity.Report],其根本原因

java.lang.IllegalArgumentException:在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)〜[na:1.8.0_201]处为null,在sun.reflect.NativeConstructorAccessorImpl.newInstance(未知来源)〜[na:1.8.0_201]处。 Reflect.DelegatingConstructorAccessorImpl.newInstance(来源未知)~

java spring jpa jpql spring-boot

2
推荐指数
1
解决办法
3270
查看次数

标签 统计

android ×1

java ×1

jpa ×1

jpql ×1

kodein ×1

kotlin ×1

spring ×1

spring-boot ×1