Hibernate - 使用一对一关系获取数据

时间:2018-05-28 09:00:42

标签: hibernate fetch

我试图了解具有不同关系和获取模式的Hibernate逻辑。我的问题在这里:

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 :(得分:0)

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

在上面一行的代码输出中永远不会 true,因为==会检查相同的引用。

您正在寻找的是:

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

确保在equals()课程中重写了Advisor(例如,与主键进行比较)。

System.out.println(st1 == st3);

也是如此