Hibernate - выборка данных с использованием отношения один к одному - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь понять логику Hibernate с различными отношениями и режимами Fetch.Мой вопрос здесь:

Между объектом Student и объектом Advisor существует взаимно-однозначное отношение Fetch.EAGER.Что будет результатом кода ниже, если нет.23 ученика и нет.25 учеников имеют одного и того же советника и почему?

Session session = sessionFactory.openSession();

Student st1 = session.load(Student.class , 23 );
Student st2 = session.load(Student.class , 25 );

System.out.println(st1.getAdvisor() == st2.getAdvisor());
session.close();

session = sessionFactory.openSession();

Student st3 = session.load(Student.class , 23);
System.out.println(st1 == st3);

session.close();

1 Ответ

0 голосов
/ 28 мая 2018
System.out.println(st1.getAdvisor() == st2.getAdvisor());

В вашем коде вывод указанной строки будет никогда не будет true, потому что == проверяет те же ссылки.

То, что вы ищете:

System.out.println(st1.getAdvisor().equals(st2.getAdvisor()));

Убедитесь, что equals() переопределено в классе Advisor (например, сравнение с первичными ключами).

То же самое относится к System.out.println(st1 == st3);

...