Если да, то
Код: Выделить всё
public Long getAllUsersCount() {
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery query = cb.createQuery(Long.class);
Root root = query.from(Userr.class); // exp = 3; act = 3 exp = 2; act = 2
//Root root2 = query.from(Userr.class); // exp = 3; act = 9 = 3^2 exp = 2; act = 6
//Root root3 = query.from(Userr.class); // exp = 3; act = 27 = 3^3 exp = 2; act = 18
query.select(cb.count(root));
//query.where(cb.equal(root.get("name"), "josh"));
return entityManager.createQuery(query).getSingleResult();
}
Когда я раскомментирую root2, я получаю 9, что равно 3 в квадрате.
Я правильно получаю 3 (ОЖИДАЕМОЕ = ФАКТИЧЕСКОЕ).
Когда я раскомментирую root2, я получаю 9, что равно 3 в квадрате.
p>
Более того, когда я также раскомментирую root3, я получаю 27, что равно 3 в кубе.
Теперь давайте прокомментируем root1 и root2< /code> еще раз, но раскомментируйте где.
При наличии только одного корня я правильно получаю 2 (ОЖИДАЕМОЕ = ФАКТИЧЕСКОЕ).
Когда я раскомментирую root2, я получаю 6.
А когда я также раскомментирую root3, я получаю 18.
Это данные, с которыми я работаю
Код: Выделить всё
INSERT INTO userr (id, name, email) VALUES
(1, 'josh', 'josh@a.com'),
(2, 'josh', 'josh@b.com'),
(3, 'coby', 'coby@a.com');
Я знаю, что мне следует использовать только один корень, но я просто хочу понять, почему так происходит. У вас есть идеи?
Тоже это происходит только на счет. Обычный выбор всегда возвращает правильные элементы, независимо от того, сколько раз я выполняю запрос.from.
Это демонстрационный проект, воспроизводящий проблему.
Подробнее здесь: https://stackoverflow.com/questions/790 ... rong-count
Мобильная версия