今天就跟大家聊聊有关 jpa与 Kotlin如何正确的在Spring Boot中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。kotlin里面的data class来创建enti
今天就跟大家聊聊有关 jpa与 Kotlin如何正确的在Spring Boot中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
kotlin里面的data class来创建entity可以帮助我们减少不少的代码,比如现在这个User的Entity,这是Java版本的:
@Entitypublic class User {@Id@GeneratedValue(strategy = GenerationType.AUTO)private long id;private String firstName;private String lastName;public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}public long getId() {return id;}public void setId(long id) {this.id = id;}public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName = firstName;}}
上面的那一大段变成kotlin,就像下面的这样的:
@Entitydata class User(@Id @GeneratedValue(strategy = GenerationType.AUTO) val id: Long = 0L, val firstName: String = "", val lastName: String = "")
连我这个用C#的人都觉得动心,如果你是Java的开发者,真的可以考虑试试看。
不过,这里还有个小提示,在kotlin里,如果你不给User给出默认的构造函数,那是会报错的,报错信息为
o.s.boot.WEB.support.ErrorPageFilter : Forwarding to error page from request / due to exception No default constructor for entity: : com._1b2m.SpringBootkotin.User; nested exception is org.hibernate.InstantiationException: No default constructor for entity: : com._1b2m.springbootkotin.User
提示是没有默认的构造函数,我们可以为User类的构造函数增加参数默认值来完成,就如同上面我写的样子。
题外话,在Java里,IDE可以帮助我们生成getter和setter。但是就算是这样,也没有像kotlin那样能把那么长的代码缩成一行,一个entity一行就写完,这感觉很不要太好。
另外,在Java里,使用CrudRepository时,这样用就行:
@AutowiredUserRepository repository;
但是在kotlin里,编译都无法通过,会报出这样一条错误:
property must be initialized or be abstract
要解决这个问题,需要增加lateinit,就像 这样:
@Autowiredlateinit var repository: UserRepository
看完上述内容,你们对 jpa与 kotlin如何正确的在spring boot中使用有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网精选频道,感谢大家的支持。
--结束END--
本文标题: jpa与 kotlin如何正确的在spring boot中使用
本文链接: https://www.lsjlt.com/news/224683.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
2024-05-16
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0