2017-01-13 20 views
0

Spring WebアプリケーションとHibernateに問題があります。それはKotlinに書かれています。 "リード" "AbstractContact" から直接継承していることSpring Data JPA/Hibernate "指定された名前の属性を見つけることができません"

@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 
     } 

注: 私たちは、抽象エンティティに

@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 

そして、それらのいくつかを持っています。問題はプロパティcontactです。 TelephonistがUserから直接継承するUser Propertyはうまく動作します。

我々はそれにそれが動作する前と同じように、やったUnable to locate Attribute with the the given name [contact] on this ManagedType (PATH to ContactLogEntry)

を取得します。本当に何が間違っているのか分かりません。

答えて

1

私の場合、純粋なJavaを使用しているため、抽象的な@MappedSuperClassはインターフェイスに基づいて抽象メソッドgetter/setterを定義していましたが、実際のメンバーフィールドは定義されていませんでした。

抽象クラスからgetter/setterメソッドを削除した後にエラーがなくなりましたが、結局それらの必要はありませんでした。 HTH

0

より広い可能性を使用すると、属性名をrefactorizedということですが、中に矛盾を持つ:

  • ゲッターおよび/またはセッター
  • @query
  • @NamedEntityGraphs
  • @NamedQuery
+0

は@NamedEntityGraphでした –

関連する問題