Java Mappedsuperclass和NamedQuery

Java Mappedsuperclass和NamedQuery,java,jpa,Java,Jpa,我有一个mappedsuperclass,如下所示: @MappedSuperclass @DiscriminatorColumn(name = "USER_TYPE") @Inheritance(strategy = InheritanceType.SINGLE_TABLE) @NamedQueries({ @NamedQuery(name = "selectAllUsers", query = "SELECT u FROM User u"), @NamedQu

我有一个mappedsuperclass,如下所示:

@MappedSuperclass
@DiscriminatorColumn(name = "USER_TYPE")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@NamedQueries({
        @NamedQuery(name = "selectAllUsers", query = "SELECT u FROM User u"),
        @NamedQuery(name = "deleteUserByName", query = "DELETE FROM User u WHERE u.userName like :name"),
        @NamedQuery(name = "getUserByName", query = "SELECT FROM User u WHERE u.userName like :name") })
public abstract class User implements Serializable {....
我在namedquery上得到一个“抽象模式类型'User'未知”错误。我不明白为什么。。。用户名是对的


欢迎任何建议。

这是预期的JPA行为。映射的超类不可查询(请参见JPA 2.0规范第节
2.11.2). 如果要使超类可查询,请将注释从
@MappedSuperclass
更改为
@Entity

确定thx,我创建了类a MappedSuperclass,因为我只希望保留扩展类。然后,我想将它们作为超类型检索,并通过使用命名查询查看它们的“类型”…@DarthBlueRay在本例中,两个注释之间的唯一区别是映射的超类是不可查询的,而实体是可查询的。这对映射没有任何影响。JPA中没有使类可查询但不可持久的功能。此外,映射的超类不能是关系的一部分。