Невозможно использовать Kotlin для настройки Spring JPA Entity с абстрактным классом - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь использовать Kotlin в проекте Spring и обнаружил, что с сущностями расширяется абстрактный класс.Котлин не может рассказать аннотацию в абстрактном классе.Конфигурация указана ниже.

Base.kt

package io.qiyue.dream.entity

import org.hibernate.annotations.GenericGenerator
import org.springframework.data.annotation.CreatedBy
import org.springframework.data.annotation.LastModifiedBy
import org.springframework.data.annotation.LastModifiedDate
import org.springframework.data.jpa.domain.support.AuditingEntityListener
import java.time.LocalDateTime
import javax.persistence.Column
import javax.persistence.EntityListeners
import javax.persistence.GeneratedValue
import javax.persistence.Id

@EntityListeners(AuditingEntityListener::class)
abstract class Base {

    @Id
    @GeneratedValue(generator = "UUID")
    @GenericGenerator(name = "UUID", strategy = "org.hibernate.id.UUIDGenerator")
    @Column(name = "id")
    open var id: String? = null

    @Column(name = "last_modified_at")
    @LastModifiedDate
    open val lastModifiedAt: LocalDateTime? = null

    @Column(name = "last_modified_by")
    @LastModifiedBy
    open val lastModifiedBy: String? = null

    @Column(name = "created_by")
    @CreatedBy
    open val createdBy: String? = null

}

Role.kt

package io.qiyue.dream.entity

import javax.persistence.*

@Entity
@Table(name = "q_role")
open class Role (val name: String) : Base(){
}

1 Ответ

0 голосов
/ 23 ноября 2018

Это также не будет работать в Java.

Вам необходимо добавить @MappedSuperclass в базовый класс, чтобы сообщить JPA, что он должен включать все свойства из базового класса:

@EntityListeners(AuditingEntityListener::class)
@MappedSuperclass
abstract class Base {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...