我正在尝试在映射的超类上声明 NamedQuery,但我收到此错误:
org.hibernate.hql.ast.QuerySyntaxException:VoipCall 未映射 [从 VoipCall v 中选择 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 {
似乎我不能在查询中使用我的 mappedSuperClass,但我不明白为什么如果在 JPA API 中我发现了这个:
NamedQuery 注释可以应用于实体或映射的超类。
我哪里错了?
谢谢!!
解决方案: 对我来说,解决方案是一种解决方法:我将命名查询移动到子类上,适时地更改了 where 子句。从我的角度来看,这使我的代码可维护性降低,但我不能以其他方式做到这一点。