Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
Sql 复合主键查询不起作用的JPA计数_Sql_Hibernate_Jpa_Count_Composite Primary Key - Fatal编程技术网

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)