Wątek przeniesiony 2023-11-26 16:09 z Java przez Riddle.

Jak poprawnie dodać adnotację @Column do atrybutu klasy?

0

Zacząłem się dopiero uczyć Kotlina i się zastanawiam jak to najlepiej napisać.
W Java mam coś takiego:

@Column(nullable = false)
private ZonedDateTime modified;

@Column(nullable = false, length = 8)
private String buyerId;

Czy w Kotlinie odpowiednik tego to: (czy można lepiej to napisać):

@Column(nullable = false)
private lateinit var modified: ZonedDateTime

@Column(nullable = false, length = 8)
private lateinit var buyerId: String

Nie jestem pewien czy tu powinienem użyć lateinit? Dzięki!

0

Chat GPT I konwertor Intellij sugerują:

    @Column(nullable = false)
    val modified: ZonedDateTime? = null,

    @Column(nullable = false, length = 8)
    val buyerId: String? = null,
0

Nie powinieneś. Używałem kotlina z hibernate kiedyś w projekcie w pracy i z tego co pamiętam normalnie używaliśmy data class z niemutowalnymi polami (val) i nie sprawiało to żadnych problemów (Połączenie kotlina z hibernate nie sprawiało problemów, bo hibernate same w sobie to jak zawsze same problemy)
Po pierwsze nie wiem czemu chcesz tworzyć private var pola. Nie ma to żadnego sensu. Lateinit jest totalnie zbędny.

Zobacz pierwszy link z googla jak zrobić poprawny setup.
https://www.baeldung.com/kotlin/jpa

0

Dzięki, Grzyboo!

1

Standardowy komentarz starych zgredów numer 1:
Jak już używasz kotlina to zabawa w tak durne rzeczy jak JPA jest naprawdę bez sensu.
Urzyj czegoś normalnego -> JDBI, JOOQ - oba dobrze działają z Kotlinem.

A JPA sprawia problemy z kotlinem -> tak samo jak z javą. Technicznie da się mieć niemutowalne pola w JPA, ale na dłuższą metę tym bardziej wtedy widać jak ten framework jest bez sensu.
JPA wymaga np. istnienia domyślnego bezparametrowego konstruktora (🤦‍♀️)

1 użytkowników online, w tym zalogowanych: 0, gości: 1