@galliard

Как правильно писать entity на kotlin?

Начали новый проект, решил попробовать kotlin. Знаком с ним по верхам, но решил, что выучу в процессе. Вроде бы та же java c более лаконичным синтаксисом, но... проблемы начались с написания первой же сущности.

Как оказалось, при описании полей сущности нужно сразу задавать им значения, типа "по умолчанию". Причем null я туда вписывать не хочу, потому что и типы тогда придется объявлять как nulleble, и проверять все это на null потом. Можно присваивать строкам значения пустой строки, интам 0 и т.д. но выглядит это даже еще более вырвиглазно, чем null. Ну то есть open var id: Int = 0, бред же.

Загуглил и и нашел такую штуку, как lateinit, вроде то что нужно, но вот на интах она не работает, пишет "lateinit modifier is not allowed on properties of primitive types", хотя казалось бы в котлине нет примитивов, как в джаве и все примитивы имеют объектную обертку. Но lateinit все равно нельзя потому что нельзя. Странненько. Нипонятненько.

В общем хотелось бы узнать, кто как пишет, есть ли какие-то общепринятые стандарты, и какие подводные камни могут быть в будущем с тем или иным подходом.
  • Вопрос задан
  • 71 просмотр
Пригласить эксперта
Ответы на вопрос 1
Djaler
@Djaler
Сеньор-помидор
Можно просто использовать значение по умолчанию, которое будет перезаписано сгенерированным ID при сохранении сущности.
@Entity
@Table(name = "chats")
data class Chat(
    @Column
    val title: String,

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    val id: Short = 0
)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы