マップされたスーパークラスで NamedQuery を宣言しようとしていますが、次のエラーが発生します。
org.hibernate.hql.ast.QuerySyntaxException: VoipCall がマップされていません [VoipCall v から v.audioFile = :audioFile を選択]
休止状態を使用しますが、JPA 標準表記を使用することを好みます。
コードは次のとおりです。
@MappedSuperclass
@NamedQueries(value = {
@NamedQuery(name = "getVoipCallsForAudio", query = "select v from VoipCall v where v.audioFile = :audioFile")
})
public abstract class VoipCall implements Serializable {
クエリでマップされたSuperClassを使用できないようですが、JPA APIでこれを見つけた場合の理由がわかりません:
NamedQuery アノテーションは、エンティティまたはマップされたスーパークラスに適用できます。
どこが間違っていますか?
ありがとう!!
解決策: 私にとっての解決策は回避策でした。名前付きクエリをサブクラスに移動し、適宜 where 句を変更しました。私の観点からすると、これによりコードの保守性が低下しますが、別の方法ではできません。