Quarkus 基于Kotlin的PanacheEntity引发运行时异常

Quarkus 基于Kotlin的PanacheEntity引发运行时异常,quarkus,Quarkus,我在使用kotlin正确配置PanacheEntity类时遇到了问题。这是我的实体: package rs.dodalovic.ordinacija.patients.db import io.quarkus.hibernate.orm.panache.PanacheEntity import javax.persistence.* @Entity @Table(name = "pacijent", schema = "ordinacija") class Patient( @fie

我在使用kotlin正确配置PanacheEntity类时遇到了问题。这是我的实体:

package rs.dodalovic.ordinacija.patients.db

import io.quarkus.hibernate.orm.panache.PanacheEntity
import javax.persistence.*

@Entity
@Table(name = "pacijent", schema = "ordinacija")
class Patient(
    @field:Column(name = "BR") @field:Id @field:GeneratedValue(strategy = GenerationType.AUTO) var id: Int,
    @field:Column(name = "Ime") var name: String,
    @field:Column(name = "Prezime") var lastname: String,
    @field:Column(name = "ImeOca") var fatherName: String,
    @field:Column(name = "JMBG") var personalNumber: String,
    @field:Column(name = "DatumRodjenja") var dob: String,
    @field:Column(name = "Adresa") var address: String,
    @field:Column(name = "Telefon") var phone: String,
    @field:Column(name = "Notes") var notes: String
) : PanacheEntity() {
    companion object {
        fun findById(id: Int): Patient? {
            return find<Patient>("id", id).firstResult()
        }

        fun deleteById(id: String) {
            PanacheEntity.delete("id", id).also {
                println("Attempt to delete by id $id resulted in $it deleted rows")
            }
        }
    }
}

正如Github问题中提到的,问题本质上是Kotlin编译器在生成invokeStatic字节码指令时没有使用实体作为目标,而是使用PanaceEntity

它看起来像:

invokestatic  #xy                 // Method io/quarkus/hibernate/orm/panache/PanacheEntity.find:(Ljava/lang/String;[Ljava/lang/Object;)Lio/quarkus/hibernate/orm/panache/PanacheQuery;
而Java中的类似示例具有如下字节码:

invokestatic  #xy                  // Method io/quarkus/hibernate/orm/panache/Fruit.find:(Ljava/lang/String;[Ljava/lang/Object;)Lio/quarkus/hibernate/orm/panache/PanacheQuery;

我还应该提到,当试图从实体的伴生对象内部调用实体的static of方法时会发生这种情况。

正如Github问题中提到的,问题本质上是Kotlin编译器在生成invokeStatic字节码指令时没有使用实体作为目标,但是泛泛性

它看起来像:

invokestatic  #xy                 // Method io/quarkus/hibernate/orm/panache/PanacheEntity.find:(Ljava/lang/String;[Ljava/lang/Object;)Lio/quarkus/hibernate/orm/panache/PanacheQuery;
而Java中的类似示例具有如下字节码:

invokestatic  #xy                  // Method io/quarkus/hibernate/orm/panache/Fruit.find:(Ljava/lang/String;[Ljava/lang/Object;)Lio/quarkus/hibernate/orm/panache/PanacheQuery;

我还应该提到,当试图从实体的伴生对象内部调用实体的静态方法时,会发生这种情况。

您找到过解决方案吗?您找到过解决方案吗?