Чем не равны 2 длинные переменные с оператором == для сравнения в Java?

У меня возникла очень странная проблема, когда я пытаюсь сравнить 2 длинные переменные, они всегда показывают false, и я могу быть уверен, что они имеют одинаковое числовое значение, отлаживая в Eclipse:

if (user.getId() == admin.getId()) {
    return true; // Always enter here
} else {
    return false;
}

Оба вышеуказанных возвращаемых значения имеют тип объекта Long, что меня смутило. И чтобы убедиться, что я написал основной метод, подобный этому:

Long id1 = 123L;
Long id2 = 123L;

System.out.println(id1 == id2);

Это печатает правда.

Так может кто-нибудь дать мне идеи? Я работаю в Java Development 3 года, но не могу объяснить этот случай.

Ответы на вопрос(3)

Ваш ответ на вопрос