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;