首页 > 解决方案 > 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 中是否有某种最佳实践来做这样的事情?

先感谢您!

标签: hibernatekotlinpropertiesmodelnotnull

解决方案


我将0, false, ""&c 用于不可为空的字段(以及可空null的字段)——以最有意义的“默认”值为准。

(我不确定这是否是最佳做法,但这是迄今为止我见过的最佳选择!)

当然,在加载现有实体时,该值将被覆盖——但它可以在创建新实体时使用,用于您未手动设置的字段。因此,这可能会告知您的选择。


推荐阅读