Quarkus 基于Kotlin的PanacheEntity引发运行时异常
我在使用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
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;
我还应该提到,当试图从实体的伴生对象内部调用实体的静态方法时,会发生这种情况。您找到过解决方案吗?您找到过解决方案吗?