Sql 复合主键查询不起作用的JPA计数
在我的数据库中,我有一个表(默认值),当我从表生成一个实体时,我得到以下两个类:Sql 复合主键查询不起作用的JPA计数,sql,hibernate,jpa,count,composite-primary-key,Sql,Hibernate,Jpa,Count,Composite Primary Key,在我的数据库中,我有一个表(默认值),当我从表生成一个实体时,我得到以下两个类: @Entity public class Defaults implements Serializable { private static final long serialVersionUID = 1L; @EmbeddedId protected DefaultsPK DefaultsPK; @Column(name = "ERTEK") private String
@Entity
public class Defaults implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
protected DefaultsPK DefaultsPK;
@Column(name = "ERTEK")
private String ertek;
getter/setter...
}
@Embeddable
public class DefaultsPK implements Serializable {
@Basic(optional = false)
@Column(name = "VALUE_1")
private String value1;
@Basic(optional = false)
@Column(name = "TYPE")
private String type;
@Basic(optional = false)
@Column(name = "VALID_FROM")
@Temporal(TemporalType.TIMESTAMP)
private Date validFrom;
@Basic(optional = false)
@Column(name = "VALID_TO")
@Temporal(TemporalType.TIMESTAMP)
private Date validTo;
getter/setter...
}
这就是为什么主键包含这些值。
我想计算表中的所有行,因此我使用以下代码:
String sql = "SELECT COUNT(d) FROM Defaults d";
Query q = em.createQuery(sql);
long count = (long)q.getSingleResult();
但我得到了这个错误:
org.hibernate.exception.SQLGrammarException: could not execute query
...
java.sql.SQLSyntaxErrorException: ORA-00907: The right expression is missing from the arithmetic expression
有什么问题?其他实体的其他计数查询正在运行
我正在使用hibernate。使用
count(d.ertek)
或count(d.id)
而不是count(d)
。当您的实体中有复合主键时,可能会发生这种情况。是的,这是有效的:从默认值d中选择计数(d.DefaultsPK.value1)