Hibernate提供了多種選擇的查詢,而不是隻有兩個檢索一對一的關係
龍版
人等級:
@Entity
@Table(name = "people")
public class Person{
@Id
@GeneratedValue
@Column
private Integer id;
@Column
private String name;
@OneToOne(optional=false, fetch=FetchType.EAGER)
private Job job;
}
工作班:
@Entity
@Table(name = "jobs")
public class Job{
@Id
@GeneratedValue
@Column
private Integer id;
@Column
private String name;
}
顯示所有人民和他們的工作:
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
List<Person> people = session.createQuery("from Person").list();
for(Person p : people){
System.out.println(p.getName() + " | " + p.getJob().getName());
}
我所期待的:兩個選擇,一個是五個人,一個用於他們的三個不同的工作(三人具有相同的工作)
什麼我:四個選擇,一個爲人民和三個它們的每個不同的工作
Hibernate: select person0_.id as id1_, person0_.job_id as job3_1_, person0_.name as name1_ from people person0_
Hibernate: select job0_.id as id0_0_, job0_.name as name0_0_ from jobs job0_ where job0_.id=?
Hibernate: select job0_.id as id0_0_, job0_.name as name0_0_ from jobs job0_ where job0_.id=?
Hibernate: select job0_.id as id0_0_, job0_.name as name0_0_ from jobs job0_ where job0_.id=?
Jim | Programmer
Andrew | DBA
Tomas | Sysadmin
Henry | Sysadmin
Jerry | Sysadmin
如果我有1000個人,有1000個不同的工作,我會看到1000個選擇正在執行。我如何做到這一點,Hibernate只做兩個選擇?
由於
不應該是人 - 工作關係'@ ManyToOne'?許多人完成同樣的工作。 – viktor 2012-04-25 21:29:13