hibernate中HQL

来源:互联网 发布:hadoop java mapreduce 编辑:程序博客网 时间:2024/06/08 07:20
package entity;import java.util.HashSet;import java.util.Set;public class Team{private String id;private String teamName;@SuppressWarnings("unchecked")private Set students = new HashSet();public String getId(){return id;}public void setId(String id){this.id = id;}public String getTeamName(){return teamName;}public void setTeamName(String teamName){this.teamName = teamName;}@SuppressWarnings("unchecked")public Set getStudents(){return students;}@SuppressWarnings("unchecked")public void setStudents(Set students){this.students = students;}}
package entity;import java.util.HashSet;import java.util.Set;public class Student{private String id;private String cardId;private int age;private String name;private Set<Course> courses = new HashSet<Course>();public Student(){}public Student(String name, int age){this.age = age;this.name = name;}public String getId(){return id;}public void setId(String id){this.id = id;}public String getName(){return name;}public void setName(String name){this.name = name;}public Set<Course> getCourses(){return courses;}public void setCourses(Set<Course> courses){this.courses = courses;}public String getCardId(){return cardId;}public void setCardId(String cardId){this.cardId = cardId;}public int getAge(){return age;}public void setAge(int age){this.age = age;}}


package entity;import java.util.HashSet;import java.util.Set;public class Course{private String id;private String name;private Set<Student> students = new HashSet<Student>();public String getId(){return id;}public void setId(String id){this.id = id;}public String getName(){return name;}public void setName(String name){this.name = name;}public Set<Student> getStudents(){return students;}public void setStudents(Set<Student> students){this.students = students;}}

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="entity.Team" table="team"><id name="id" column="id" type="string"><generator class="uuid"></generator></id><property name="teamName" column="teamName" type="string"></property><set name="students" inverse="true" lazy="true" cascade="all"><key column="team_id"></key><one-to-many class="entity.Student"/></set></class></hibernate-mapping>

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="entity.Student" table="student"><id name="id" column="id" type="string"><generator class="uuid"></generator></id><property name="name" column="name" type="string"></property><property name="cardId" column="cardId" type="string"></property><property name="age" column="age" type="int"></property><set name="courses" table="student_course" cascade="save-update"><key column="stu_id"></key><many-to-many class="entity.Course" column="course_id"></many-to-many></set></class></hibernate-mapping>

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="entity.Course" table="course"><id name="id" column="id" type="string"><generator class="uuid"></generator></id><property name="name" column="name" type="string"></property><set name="students" table="student_course" cascade="save-update" inverse="true"><key column="course_id"></key><many-to-many class="entity.Student" column="stu_id"></many-to-many></set></class></hibernate-mapping>
package entity;import org.hibernate.cfg.Configuration;import org.hibernate.tool.hbm2ddl.SchemaExport;/** *  *  * create table course (id varchar(255) not null, name varchar(255), primary key (id))create table student (id varchar(255) not null, name varchar(255), cardId varchar(255), age integer, team_id varchar(255), primary key (id))create table student_course (stu_id varchar(255) not null, course_id varchar(255) not null, primary key (stu_id, course_id))create table team (id varchar(255) not null, teamName varchar(255), primary key (id))alter table student add index FK8FFE823BC2CDC4C9 (team_id), add constraint FK8FFE823BC2CDC4C9 foreign key (team_id) references team (id)alter table student_course add index FKB0A3729F7D75AAB2 (stu_id), add constraint FKB0A3729F7D75AAB2 foreign key (stu_id) references student (id)alter table student_course add index FKB0A3729F8BE0B449 (course_id), add constraint FKB0A3729F8BE0B449 foreign key (course_id) references course (id) * */public class CreateTable{public static void main(String[] args){SchemaExport export = new SchemaExport(new Configuration().configure());export.create(true, true);}}

package entity;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.Transaction;public class Test {public static void main(String[] args) {test3();}static void save () {//课程Course math = new Course();math.setName("math");Course english = new Course ();english.setName("english");Course chinese = new Course();chinese.setName("chinese");Course music = new Course ();music.setName("music");//学生Student zhangsan = new Student ();zhangsan.setName("zhangsan");zhangsan.setCardId("111");zhangsan.setAge(20);Student lisi = new Student ();lisi.setName("lisi");lisi.setCardId("222");lisi.setAge(21);Student wangwu = new Student ();wangwu.setName("wangwu");wangwu.setAge(22);wangwu.setCardId("333");//班级Team team1 = new Team ();team1.setTeamName("team1");Team team2 = new Team ();team2.setTeamName("team2");//关联zhangsan.getCourses().add(math);zhangsan.getCourses().add(music);lisi.getCourses().add(math);lisi.getCourses().add(chinese);lisi.getCourses().add(english);team1.getStudents().add(zhangsan);team1.getStudents().add(wangwu);team2.getStudents().add(lisi);Session session = HibernateUtil.getSession();Transaction tx = null;try {tx = session.beginTransaction();session.save(team1);session.save(team2);tx.commit();}catch (Exception ex) {ex.printStackTrace();if (null != ex) {tx.rollback();}}}static void test () {Session session = HibernateUtil.getSession();Transaction tx = session.beginTransaction();try {tx = session.beginTransaction();/* * 如果查询的是整个类表示一个Student(from Student s)对象,否则就是离散的值 */Query query = session.createQuery("select s.name ,s.age from Student s");List list = query.list();for (int i = 0;i < list.size();i++) { Object[] obj = (Object[])list.get (i); System.out.println(obj[0]+":"+obj[1]);}tx.commit();}catch (Exception ex) {ex.printStackTrace();if (null != ex) {tx.rollback();}}}static void test2 () {Session session = HibernateUtil.getSession();Transaction tx = session.beginTransaction();try {tx = session.beginTransaction();Query query = session.createQuery("select new Student (s.name,s.age) from Student s");List list = query.list();for (int i = 0;i < list.size();i++) { Student student = (Student)list.get(i); System.out.println(student.getName()+":"+student.getAge());}/* *会发送sql语句  *  */Student student2 = (Student) session.get(Student.class, "8a68a9583eef4170013eef4171c60002");System.out.println("student2="+student2);tx.commit();}catch (Exception ex) {ex.printStackTrace();if (null != ex) {tx.rollback();}}}//内连接/** *  *  *  */static void test3() {Session session = HibernateUtil.getSession();Transaction tx = session.beginTransaction();try {tx = session.beginTransaction();Query query = session.createQuery("from Team t inner join  t.students s ");List list = query.list();for (int i = 0;i < list.size();i++) { Object ob[] = (Object[])list.get(i); Team team = (Team)ob[0]; Student stu = (Student)ob[1]; System.out.println(team.getId()+":"+stu.getId());}
不会发送sql语句
Student student2 = (Student) session.get(Student.class, "8a68a9583eef4170013eef4171c60002");System.out.println("student2="+student2);
tx.commit();}catch (Exception ex) {ex.printStackTrace();if (null != ex) {tx.rollback();}}}}
--------------------------------------------------------------------------------------------------------------

package entity;import java.util.HashSet;import java.util.Set;public class Course{private String id;private String name;private Set<Student> students = new HashSet<Student>();public String getId(){return id;}public void setId(String id){this.id = id;}public String getName(){return name;}public void setName(String name){this.name = name;}public Set<Student> getStudents(){return students;}public void setStudents(Set<Student> students){this.students = students;}}
package entity;import java.util.HashSet;import java.util.Set;public class Student{private String id;private String cardId;private int age;private String name;private Set<Course> courses = new HashSet<Course>();private Team team;public Student(){}public Student(String name, int age){this.age = age;this.name = name;}   public Team getTeam() {return team;}public void setTeam(Team team) {this.team = team;}public String getId(){return id;}public void setId(String id){this.id = id;}public String getName(){return name;}public void setName(String name){this.name = name;}public Set<Course> getCourses(){return courses;}public void setCourses(Set<Course> courses){this.courses = courses;}public String getCardId(){return cardId;}public void setCardId(String cardId){this.cardId = cardId;}public int getAge(){return age;}public void setAge(int age){this.age = age;}}

package entity;import java.util.HashSet;import java.util.Set;public class Team{private String id;private String teamName;@SuppressWarnings("unchecked")private Set students = new HashSet();public String getId(){return id;}public void setId(String id){this.id = id;}public String getTeamName(){return teamName;}public void setTeamName(String teamName){this.teamName = teamName;}@SuppressWarnings("unchecked")public Set getStudents(){return students;}@SuppressWarnings("unchecked")public void setStudents(Set students){this.students = students;}}

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="entity.Course" table="course"><id name="id" column="id" type="string"><generator class="uuid"></generator></id><property name="name" column="name" type="string"></property><set name="students" table="student_course" cascade="save-update" inverse="true"><key column="course_id"></key><many-to-many class="entity.Student" column="stu_id"></many-to-many></set></class></hibernate-mapping>

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="entity.Student" table="student"><id name="id" column="id" type="string"><generator class="uuid"></generator></id><property name="name" column="name" type="string"></property><property name="cardId" column="cardId" type="string"></property><property name="age" column="age" type="int"></property><set name="courses" table="student_course" cascade="save-update"><key column="stu_id"></key><many-to-many class="entity.Course" column="course_id"></many-to-many></set><many-to-one name="team" class = "entity.Team" fetch = "select" column = "team_id"></many-to-one></class></hibernate-mapping>

<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="entity.Team" table="team"><id name="id" column="id" type="string"><generator class="uuid"></generator></id><property name="teamName" column="teamName" type="string"></property><set name="students" inverse="true" lazy="true" cascade="all"><key column="team_id"></key><one-to-many class="entity.Student"/></set></class></hibernate-mapping>

package entity;import org.hibernate.cfg.Configuration;import org.hibernate.tool.hbm2ddl.SchemaExport;/** *  *  * create table course (id varchar(255) not null, name varchar(255), primary key (id))create table student (id varchar(255) not null, name varchar(255), cardId varchar(255), age integer, team_id varchar(255), primary key (id))create table student_course (stu_id varchar(255) not null, course_id varchar(255) not null, primary key (stu_id, course_id))create table team (id varchar(255) not null, teamName varchar(255), primary key (id))alter table student add index FK8FFE823BC2CDC4C9 (team_id), add constraint FK8FFE823BC2CDC4C9 foreign key (team_id) references team (id)alter table student_course add index FKB0A3729F7D75AAB2 (stu_id), add constraint FKB0A3729F7D75AAB2 foreign key (stu_id) references student (id)alter table student_course add index FKB0A3729F8BE0B449 (course_id), add constraint FKB0A3729F8BE0B449 foreign key (course_id) references course (id) * */public class CreateTable{public static void main(String[] args){SchemaExport export = new SchemaExport(new Configuration().configure());export.create(true, true);}}

package entity;import java.util.List;import org.hibernate.Hibernate;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.Transaction;public class Test {public static void main(String[] args) {test();}static void test () {Session session = HibernateUtil.getSession();Transaction tx = session.beginTransaction();try {tx = session.beginTransaction();/*第一种方式Query query = session.createQuery("from Student s where s.team=:team and s.age <= 22");query.setString("team", "8a68a9583eef4170013eef4171b70001");List list = query.list();*//*第二种方式Team team = (Team)session.get(Team.class, "8a68a9583eef4170013eef4171b70001");Query query = session.createQuery("from Student s where s.team=:team and s.age <= 22");query.setParameter("team", team,Hibernate.entity(Team.class));List list = query.list();*//*第三种方式 *  * Team team = (Team)session.get(Team.class, "8a68a9583eef4170013eef4171b70001");Query query = session.createQuery("from Student s where s.team=:team and s.age <= 22");query.setEntity("team", team);List list = query.list(); */Team team = (Team)session.get(Team.class, "8a68a9583eef4170013eef4171b70001");Query query = session.createFilter(team.getStudents(), "where age < 22");List list = query.list();for (int i = 0;i < list.size();i++) {Student student = (Student) list.get(i);System.out.println(student.getName());}tx.commit();}catch (Exception ex) {ex.printStackTrace();if (null != ex) {tx.rollback();}}}}

package entity;import java.util.List;import org.hibernate.Criteria;import org.hibernate.Session;import org.hibernate.Transaction;import org.hibernate.criterion.Order;import org.hibernate.criterion.Restrictions;public class Test2 {public static void main(String[] args) {test4 ();}public static void test () {Session session = HibernateUtil.getSession();Transaction tx = session.beginTransaction();try {Criteria criteria = session.createCriteria(Student.class).add(Restrictions.between("age", 20, 22));List list = criteria.list();for (int i = 0;i < list.size();i++) {Student student = (Student) list.get(i);System.out.println(student.getName());}tx.commit();}catch (Exception ex) {ex.printStackTrace();if (null != ex) {tx.rollback();}}}public static void test2 () {Session session = HibernateUtil.getSession();Transaction tx = session.beginTransaction();try {Criteria criteria = session.createCriteria(Student.class).add(Restrictions.like("name", "z%"));List list = criteria.list();for (int i = 0;i < list.size();i++) {Student student = (Student) list.get(i);System.out.println(student.getName());}tx.commit();}catch (Exception ex) {ex.printStackTrace();if (null != ex) {tx.rollback();}}}public static void test3 () {Session session = HibernateUtil.getSession();Transaction tx = session.beginTransaction();try {String name[] = {"zhangsan","lisi"};Criteria criteria = session.createCriteria(Student.class).add(Restrictions.in("name", name));List list = criteria.list();for (int i = 0;i < list.size();i++) {Student student = (Student) list.get(i);System.out.println(student.getName());}tx.commit();}catch (Exception ex) {ex.printStackTrace();if (null != ex) {tx.rollback();}}}public static void test4 () {Session session = HibernateUtil.getSession();Transaction tx = session.beginTransaction();try {Criteria criteria = session.createCriteria(Student.class).addOrder(Order.desc("age"));List list = criteria.list();for (int i = 0;i < list.size();i++) {Student student = (Student) list.get(i);System.out.println(student.getName()+":"+student.getAge());}tx.commit();}catch (Exception ex) {ex.printStackTrace();if (null != ex) {tx.rollback();}}}}