首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复合主键查询不起作用的JPA计数

复合主键查询不起作用的JPA计数
EN

Stack Overflow用户
提问于 2014-02-13 00:25:35
回答 1查看 108K关注 0票数 33

在我的数据库中,我有一个表(默认),当我从表中生成一个实体时,我得到了这两个类:

代码语言:javascript
复制
@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...
}

这就是为什么主键包含了这些值。我想计算表中的所有行,所以我使用以下代码:

代码语言:javascript
复制
String sql = "SELECT COUNT(d) FROM Defaults d";
Query q = em.createQuery(sql);
long count = (long)q.getSingleResult();

但是我得到了这个错误:

代码语言:javascript
复制
org.hibernate.exception.SQLGrammarException: could not execute query
...
java.sql.SQLSyntaxErrorException: ORA-00907: The right expression is missing from the arithmetic expression

有什么问题吗?其他实体的其他计数查询正在工作。

我正在使用hibernate。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-13 02:19:56

使用count(d.ertek)count(d.id)而不是count(d)。当您的实体中有复合主键时,可能会发生这种情况。

票数 56
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21733673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档