我们遇到Spring Web Application和Hibernate的问题。它写在Kotlin。 我们有一个抽象的实体
@Inheritance(strategy = InheritanceType.JOINED)
abstract @Entity class ContactLogEntry protected constructor() {
@GeneratedValue @Id val id: Long = 0
@ManyToOne
@JoinColumn
protected lateinit var _contact: AbstractContact
open val contact: AbstractContact? get() = _contact
@ManyToOne
protected var _user: User? = null
open val user: User? get() = _user
其中一些:
@Entity class MailLogEntry() : ContactLogEntry() {
override var contact: Lead
get() = super.contact as Lead
set(value) {
super._contact = value
}
override var user: Telephonist
get() = super.user as Telephonist
private set(value) {
super._user = value
}
请注意" Lead"直接从" AbstractContact"继承。问题在于属性contact
。 Telephonist直接从User继承的User Property工作正常。
我们得到Unable to locate Attribute with the the given name [contact] on this ManagedType (PATH to ContactLogEntry)
我们之前以同样的方式做到了,它的工作原理。真的不知道什么是错的。
答案 0 :(得分:3)
在我的例子中,使用纯java,原因是抽象的@MappedSuperClass根据接口定义了抽象getter / setter方法,但没有定义实际的成员字段。
从抽象类中删除getter / setter方法后,错误消失了,毕竟不需要它们。 HTH
答案 1 :(得分:0)
更广泛的可能性是您重构了属性名称,但在:
中存在不一致