Java 计数查询使用EmbeddedID给出错误的结果

Java 计数查询使用EmbeddedID给出错误的结果,java,hibernate,jpa,Java,Hibernate,Jpa,我有一个实体类,如: @Entity @Table(name = "T_STUDENT") public class Student implements java.io.Serializable { private static final long serialVersionUID = 1L; @EmbeddedId private StudentId studentId; ..... 学生ID课程为: @Embeddable public class

我有一个实体类,如:

@Entity
@Table(name = "T_STUDENT")
public class Student implements java.io.Serializable {
    private static final long serialVersionUID = 1L;

    @EmbeddedId
    private StudentId studentId;

    .....
学生ID课程为:

@Embeddable
public class StudentId implements Serializable{
    private static final long serialVersionUID = 1L;

    @Column(name = "ID", nullable = false)
    private Long id;

    @Column(name = "STATE", nullable = false)
    private String state;
现在我需要计算学生人数。我这样做:

public <T> Long findCountWithFilter(Class<T> clazz, FilterCriteria filterCriteria) {
        Util.checkNotNull("needs a clazz", clazz);
        CriteriaBuilder cb = entityManager.getCriteriaBuilder();
        CriteriaQuery<Long> cq = cb.createQuery(Long.class);
        Root<T> root = cq.from(clazz);
        cq.select(cb.count(root));

        return entityManager.createQuery(cq).getSingleResult();
    }
public Long-findCountWithFilter(类clazz,FilterCriteria FilterCriteria){
Util.checkNotNull(“需要一个clazz”,clazz);
CriteriaBuilder cb=entityManager.getCriteriaBuilder();
CriteriaQuery cq=cb.createQuery(Long.class);
根根=cq.from(clazz);
cq.选择(cb.计数(根));
返回entityManager.createQuery(cq.getSingleResult();
}
我得到了错误的结果。计数始终为0。知道为什么吗