在kotlin中,编写实体类时,属性的默认值为null,属性的注解为@Column(nullable = false)
,表示不能为空,例如下面username
:
@Entity
class Users {
@Column(nullable = false)
var username: String? = null
}
findById
查询时返回以下结果:val user = Users(username:"MyName")
当调用user. username!!
时,我必须带!!
,因为注解是@Column(nullable = false)
。
这就产生了一个问题:我拿到username
的时候,总是要检查username
的@Column
注解有没有标记为空,然后才能判断要不要写!!
,这是很麻烦的,而且总是不小心把不该写的写在!!
上。
当我标记@Column(nullable = false)
而不写!!
时,我可以做些什么来防止IDEA编译器报告错误?
如果它是这样写的(给属性一个默认值):
@Column(nullable = false)
var username: String = "default"
使用findById
查询时,必须带withIgnorePaths
,比较麻烦:
val matcher = ExampleMatcher.matching().withIgnorePaths("username", ...))
Example.of(Users(username:""),matcher)
1条答案
按热度按时间cmssoen21#
在您的情况下避免
!!
的方法。1.最简单的方法是,使
username
不为空,因此每次创建Users
时都需要提供username
。1.创建一个新层,比如
UsersDto
,看起来像这样:这需要在数据层和实体之间实现一些Map。然而,你需要处理可为空的
username
,你可以在Map器!!
中强制执行(但只能执行一次)或者