hibernate - Kotlin:休眠模型中的属性声明
问题描述
我们有大量的 Java 应用程序,并且正在尝试在 Kotlin 中实现我们的第一个应用程序。问题是:初始化简单休眠模型的属性的最佳方法是什么?
让我们以 Java 中的以下示例为例:
@Entity
@Table(name = "Session_Ids")
public class SessionId() {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
protected Long id;
@Column
protected Long number;
}
现在让我们假设数据库中的 id 和 number 永远不能为空。因此,在休眠完成所有操作后,模型将始终在 id 字段中具有一个值,在 number 字段中具有一个值。
我怎样才能在 Kotlin 中做到这一点?我不能用 null 来初始化它们,因为我必须将这些字段声明为它们不应该的 Nullable。我不能使用lateinit,因为这两个字段都是原始长类型。
我看到防止将它们定义为可为空的唯一方法是用一些错误的默认值初始化它们。就像是
var number: Long = -1
但这在我看来是错误的。
在 Kotlin 中是否有某种最佳实践来做这样的事情?
先感谢您!
解决方案
我将0
, false
, ""
&c 用于不可为空的字段(以及可空null
的字段)——以最有意义的“默认”值为准。
(我不确定这是否是最佳做法,但这是迄今为止我见过的最佳选择!)
当然,在加载现有实体时,该值将被覆盖——但它可以在创建新实体时使用,用于您未手动设置的字段。因此,这可能会告知您的选择。
推荐阅读
- sql - 如何从视图中唯一标识表,并将 1:1 和逻辑与视图分开?
- bash - 使用包含 NULL 字符的正则表达式字符范围的 Grep
- kotlin - Unit.INSTANCE 与单位?Unit 编译但有 IDE 错误,Unit.INSTANCE 没有编译但没有 IDE 错误
- r - 整合两个数据框,给出一个位置并在 R 中使用一个区间
- python - 如何在稳定的基线中获得 action_propability() 3
- arrays - ruby - 计算超市排队的时间
- ios - Swift - 使用通用方法实现不同的协议
类型 - python - 如何在不设置重写目标的情况下通过入口访问烧瓶应用程序
- android - 如何创建没有启动器图标的android应用程序?但它可以从 android 命令终端打开
- eclipse - 在 ATL model2model 转换中启用多对多(基数)