@Entity
@Table(name="t_group")
publicclass Group {
private Integer id;
private String name;
private Set<Person> persons=newHashSet<Person>();
@OneToMany
public Set<Person> getPersons() {
returnpersons;
}
publicvoid setPersons(Set<Person> persons) {
this.persons = persons;
}
@Id
@GeneratedValue
public Integer getId() {
returnid;
}
publicvoid setId(Integer id) {
this.id = id;
}
@Column(name="g_name")
public String getName() {
returnname;
}
publicvoid setName(String name) {
this.name = name;
}
}
@Entity
@Table(name="p_person")
publicclass Person {
private Integer id;
private String name;
private Integer age;
private Group group;
@ManyToOne
@JoinColumn(name="group_id")
public Group getGroup() {
returngroup;
}
publicvoid setGroup(Group group) {
this.group = group;
}
@Id
@GeneratedValue
public Integer getId() {
returnid;
}
publicvoid setId(Integer id) {
this.id = id;
}
@Column(name="p_name")
public String getName() {
returnname;
}
publicvoid setName(String name) {
this.name = name;
}
@Column(name="p_age")
public Integer getAge() {
returnage;
}
publicvoid setAge(Integer age) {
this.age = age;
}
}
现在我们查询Person,看它发送的SQL语句
//我们发现,在查询Person的时候,发送的SQL语句
@Test
publicvoid findTest1(){
Session s=sessionFactory.getCurrentSession();
s.beginTransaction();
List<Person> persons=s.createQuery("from Person").list();
for(Person person:persons){
System.out.println(person.getName()+"----"+person.getId()); }
s.getTransaction().commit();
}
11:02:13,036 DEBUGSQL:111 -
select
person0_.id as id1_,
person0_.p_age as p2_1_,
person0_.group_id as group4_1_,
person0_.p_name as p3_1_
from
p_person person0_
11:02:13,078 DEBUGSQL:111 -
select
group0_.id as id0_0_,
group0_.g_name as g2_0_0_
from
t_group group0_
where
group0_.id=?
11:02:13,096 DEBUGSQL:111 -
select
group0_.id as id0_0_,
group0_.g_name as g2_0_0_
from
t_group group0_
where
group0_.id=?
11:02:13,100 DEBUGSQL:111 -
select
group0_.id as id0_0_,
group0_.g_name as g2_0_0_
from
t_group group0_
where
group0_.id=?
11:02:13,102 DEBUGSQL:111 -
select
group0_.id as id0_0_,
group0_.g_name as g2_0_0_
from
t_group group0_
where
group0_.id=?
11:02:13,103 DEBUGSQL:111 -
select
group0_.id as id0_0_,
group0_.g_name as g2_0_0_
from
t_group group0_
where
group0_.id=?
11:02:13,105 DEBUGSQL:111 -
select
group0_.id as id0_0_,
group0_.g_name as g2_0_0_
from
t_group group0_
where
group0_.id=?
11:02:13,107 DEBUGSQL:111 -
select
group0_.id as id0_0_,
group0_.g_name as g2_0_0_
from
t_group group0_
where
group0_.id=?
11:02:13,110 DEBUGSQL:111 -
select
group0_.id as id0_0_,
group0_.g_name as g2_0_0_
from
t_group group0_
where
group0_.id=?
11:02:13,113 DEBUGSQL:111 -
select
group0_.id as id0_0_,
group0_.g_name as g2_0_0_
from
t_group group0_
where
group0_.id=?
11:02:13,115 DEBUGSQL:111 -
select
group0_.id as id0_0_,
group0_.g_name as g2_0_0_
from
t_group group0_
where
group0_.id=?
张三0----1
张三1----2
张三2----3
张三3----4
张三4----5
张三5----6
张三6----7
张三7----8
张三8----9
张三9----10
@ManyToOne(fetch=FetchType.LAZY)
@Test
publicvoid findTest1(){
Session s=sessionFactory.getCurrentSession();
s.beginTransaction();
// List<Person>persons=(List<Person>)s.createCriteria(Person.class).list();//解决方法1
List<Person> persons=s.createCriteria(Person.class).list();
// List<Person>persons=s.createQuery("from Person p left join fetch p.groupg").list();//解决方法3
for(Person person:persons){
System.out.println(person.getName()+"----"+person.getId());
// System.out.println(person.getGroup().getName());
}
s.getTransaction().commit();
}