在我的数据库中,我有一个表(默认值),当我从表生成一个实体时,我得到这两个类:
@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)。当您的实体具有复合主键时,可能会发生这种情况。
原文地址:https://www.jb51.cc/mssql/84424.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。