Что не так с этим запросом выбора JPA COUNT?

В моей БД у меня есть таблица (по умолчанию), и когда я генерирую сущность из таблицы, я получаю эти два класса:

@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

В чем проблема? Другие запросы подсчета с другими объектами работают.

Я использую спящий режим.

1 ответ

Решение

Использование count(d.ertek) или же count(d.id) вместо count(d), Это может произойти, когда у вас есть составной первичный ключ в вашей организации.

Другие вопросы по тегам