In my db, I have a table (Defaults), and when I generate an entity from table, I get these two classes:
@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... }
That is why becaues the primary key is including the values. I want to count all the rows in the table, so I use this code:
String sql = "SELECT COUNT(d) FROM Defaults d"; Query q = em.createQuery(sql); long count = (long)q.getSingleResult();
But I am getting this error:
org.hibernate.exception.SQLGrammarException: could not execute query ... java.sql.SQLSyntaxErrorException: ORA-00907: The right expression is missing from the arithmetic expression
What is the problem? The other count queries with other entities are working.
I am using hibernate.
Use count(d.ertek)
or count(d.id)
instead of count(d)
. This can be happen when you have composite primary key at your entity.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With