Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @Mappedsuperclass上字段的JPA查询_Java_Jpa - Fatal编程技术网

Java @Mappedsuperclass上字段的JPA查询

Java @Mappedsuperclass上字段的JPA查询,java,jpa,Java,Jpa,我在下面有一个映射的超级类: @MappedSuperclass @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn(name = "VERSIONABLE_TYPE") public class Versionable extends VMAuditedObject implements Serializable, Comparable<Versionable> { pr

我在下面有一个映射的超级类:

@MappedSuperclass
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name = "VERSIONABLE_TYPE")
public class Versionable extends VMAuditedObject implements Serializable,
        Comparable<Versionable> {

    private static final long serialVersionUID = 1L;
    @Basic(optional = false)
    @NotNull
    @Min(0)
    @Column(name = "major_version")
    private int majorVersion;
    @Basic(optional = false)
    @NotNull
    @Min(0)
    @Column(name = "mid_version")
    private int midVersion;
    @Basic(optional = false)
    @NotNull
    @Min(1)
    @Column(name = "minor_version")
    private int minorVersion;
...
}
如何对Versionable上定义的字段进行查询

"select from project "
                    + "where major_version=" + p.getMajorVersion()
                    + " and mid_version=" + p.getMidVersion()
                    + " and minor_version=" + p.getMinorVersion();
我得到以下错误:

Internal Exception: org.h2.jdbc.JdbcSQLException: Column "MAJOR_VERSION" not found;

这可能意味着专栏MAJOR_版本不存在。我认为你在滥用遗产。这应该是一个可嵌入类,而不是超类。它确实存在于超类中。该方法还显示了Project类。消息不会抱怨缺少字段或缺少类的属性。它来自数据库驱动程序,并抱怨缺少列。这是hql查询还是本机查询?如果是hql,您能尝试使用属性而不是Collens名称吗?例如,使用majorVersion代替majorVersion。您还需要为“=:”更改“=”。这是一个本机查询。这可能意味着该列的MAJOR_版本不存在。我认为你在滥用遗产。这应该是一个可嵌入类,而不是超类。它确实存在于超类中。该方法还显示了Project类。消息不会抱怨缺少字段或缺少类的属性。它来自数据库驱动程序,并抱怨缺少列。这是hql查询还是本机查询?如果是hql,您能尝试使用属性而不是Collens名称吗?例如,使用majorVersion代替majorVersion。您还需要为“=:”更改“=”。这是一个本机查询。
Internal Exception: org.h2.jdbc.JdbcSQLException: Column "MAJOR_VERSION" not found;