时间:2021-05-20
1、前言
最近在用Kotlin+Spring Boot写一个后端项目,实体类习惯性地用了Kotlin中的data class,但是Spring要求要有一个无参的构造函数,否则可能会抛出java.sql.SQLDataException。要使data class能够生成一个无参的构造函数,有两种方法可以做到:
1.给data class的构造函数中的每一个参数都赋上默认值。比如:
data class User( @TableId(value = "id", type = IdType.AUTO) var id: Int?=-1, var userName: String?=null, //用户名 var age: Int?=null, //年龄 var password: String?=null, //密码 var name: String?=null, //姓名 var email: String?=null //邮箱) : Serializable2.使用无参编译器插件no-arg。下面我们就来看看这种方法。
2、具体步骤
2.1 添加插件依赖
首先需要在工程的build.gradle中添加no-arg插件的依赖,版本跟Kotlin的版本一致:
我用的是plugins的形式,如果你使用的是buildscript 块的话就可以这样添加:
buildscript { dependencies { classpath "org.jetbrains.kotlin:kotlin-noarg:1.3.41" }}apply plugin: "kotlin-noarg"2.2 指定无参注解列表
说实话,在看官方文档时这一步并不好理解,这里只描述我经过自己的实践之后得出的经验。首先创建一个注解类,类名我们可以定为NoArg:
annotation class NoArg然后最关键一步来了,回到工程的build.gradle文件,添加无参注解列表:
noArg { annotation("com.lindroid.projectname.annotation.NoArg")}annotation中的路径就是我们创建的NoArg注解类所在的包目录。路径一定要写好,不要出错!此时无参插件就已经配置好了。我们可以在data class前面添加@NoArg注解,这样编译器就能为其生成一个无参构造函数。使用示例如下:
@NoArgdata class User( @TableId(value = "id", type = IdType.AUTO) var id: Int?, var userName: String?, //用户名 var age: Int?, //年龄 var password: String?, //密码 var name: String?, //姓名 var email: String? //邮箱) : Serializable2.3 kotlin-jpa中的无参注解
如果你的项目中已经添加了kotlin-jpa插件,那么基本上就不必单独添加无参插件了。kotlin-jpa对无参插件做了包装,当你使用 @Entity、 @Embeddable 与 @MappedSuperclass这几个注解时,都会默认支持无参注解的。
3、参考文章
Kotlin官方文档
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
详解编译器编译原理什么是gcc什么是gcc:gcc是GNUCompilerCollection的缩写。最初是作为C语言的编译器(GNUCCompiler),现在
Gradle编译打包Androidapk详细介绍理解Gradle构建过程,解读AndroidGradle插件的配置阅读本文一定是要使用过Gradle生成apk,
#pragma#pragma预处理指令详解在所有的预处理指令中,#Pragma指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作
Pycharm本身并不带编译器,所以第一次用需要自己下载编译器插件。1、首先去https://www.python.org/downloads/这个网址去下载对
之前在extern“C”用法详解中已经提到过符号的概念,它是编译器对变量和函数的一种标记,编译器对C和C++代码在生产符号时规则也是不一样的,符号除了本身名字的