hibernate——HQL(二)简单的连接查询、隐式连接、显示连接
package com.xueyoucto.xueyou;
import javax.persistence.*;
/**
* Created by Administrator on 2016/6/30.
*/
enum Level{
初级,中级,高级
}
@Entity
@Table(name = "h5_teacher")
public class Teacher {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer tid;
private String name;
@Enumerated(EnumType.ORDINAL)
private Level level;
private int age;
public Integer getTid() {
return tid;
}
public void setTid(Integer tid) {
this.tid = tid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Level getLevel() {
return level;
}
public void setLevel(Level level) {
this.level = level;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package com.xueyoucto.xueyou;
import org.hibernate.annotations.*;
import org.hibernate.annotations.CascadeType;
import javax.persistence.*;
import javax.persistence.Entity;
import javax.persistence.Table;
@Entity
@Table(name = "h5_user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
private Integer age;
private String email;
@ManyToOne(targetEntity = Teacher.class)
@JoinColumn(name = "tid",nullable = false)
@Cascade(CascadeType.ALL)
private Teacher teacher;
public Teacher getTeacher() {
return teacher;
}
public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
package com.xueyoucto.xueyou;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import com.xueyoucto.util.HibernateUtil;
import java.util.List;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
SessionFactory sf = HibernateUtil.getSessionFactory();
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
/*Teacher t = new Teacher();
t.setName("王老师");
t.setAge(35);
t.setLevel(Level.高级);
session.persist(t);*/
/* Teacher t = (Teacher)session.load(Teacher.class,2);
User u = new User();
u.setName("小明4");
u.setAge(13);
u.setEmail("777@qq.com");
u.setTeacher(t);
session.save(u);*/
List userList = session.createQuery("select distinct u from User u where u.teacher.name = ?1")
.setParameter("1","王老师")
.list();
for(Object ele : userList){
User u = (User)ele;
System.out.println(u.getId() + "\t" + u.getName());
}
tx.commit();
session.close();
sf.close();
}
}
数据库中表:
h5_teacher
h5_user
运行结果:
上面是进行的隐式连接,还有一种显示连接如下:
List userList = session.createQuery("select distinct u from User u inner join u.teacher t where t.name = ?1")
.setParameter("1","王老师")
.list();
for(Object ele : userList){
User u = (User)ele;
System.out.println(u.getId() + "\t" + u.getName());
}