Spring Data JPA / Hibernate"无法找到具有给定名称的属性"

时间:2017-01-13 14:24:16

标签: java spring hibernate spring-mvc kotlin

我们遇到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)

我们之前以同样的方式做到了,它的工作原理。真的不知道什么是错的。

2 个答案:

答案 0 :(得分:3)

在我的例子中,使用纯java,原因是抽象的@MappedSuperClass根据接口定义了抽象getter / setter方法,但没有定义实际的成员字段。

从抽象类中删除getter / setter方法后,错误消失了,毕竟不需要它们。 HTH

答案 1 :(得分:0)

更广泛的可能性是您重构了属性名称,但在:

中存在不一致
  • getter和/或setter
  • @Query
  • @NamedEntityGraphs
  • @NamedQuery