Класс Composite-id должен реализовывать Serializable - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь использовать JPA с kotlin и в основном получил два класса, которые должны работать вместе.У меня возникла проблема с тем, как сделать сериализуемый класс данных Crops.Я пытался добавить @Serializable в Crops, но IntelliJ говорит мне, что у Crops нет конструктора.Вот два класса:

@Entity
data class Crops(
    val amountOwned: Int = 0
) {

@Id
@ManyToOne(fetch = FetchType.EAGER)
lateinit var user: User


@ManyToOne(fetch = FetchType.EAGER)
lateinit var plant: Plant


constructor(user: User, plant: Plant) : this() {
    this.plant = plant
    this.user = user
}}


@Entity
data class User (
    @Id
    val username: String = "",

    @get: NotBlank
    val password: String = "",

    @get: NotBlank
    val salt: String = "",

    @OneToMany(mappedBy = "user")
    val crops: MutableSet<Crops> = HashSet()

Вся помощь оценена!Спасибо:)

1 Ответ

0 голосов
/ 08 февраля 2019

Вы должны создать IdClass для сельскохозяйственных культур, поскольку JPA требует наличия одного класса для таких методов, как EntityManager.find ()

data class CropsId (val username: String = "")

. Затем используйте его с @ IdClass

@IdClass(CropsPK::class)
@Entity
data class Crops(
    val amountOwned: Int = 0
) {

@Id
@ManyToOne(fetch = FetchType.EAGER)
lateinit var user: User


@ManyToOne(fetch = FetchType.EAGER)
lateinit var plant: Plant


constructor(user: User, plant: Plant) : this() {
    this.plant = plant
    this.user = user
}}
.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...