diff --git a/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/hql/HqlTest.java b/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/hql/HqlTest.java
new file mode 100644
index 0000000..34cefd2
--- /dev/null
+++ b/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/hql/HqlTest.java
@@ -0,0 +1,33 @@
+package com.supwisdom.tutorial.hibernate.hql;
+
+import java.util.List;
+
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+
+import com.supwisdom.tutorial.hibernate.util.HibernateUtil;
+
+/**
+ * 一个公司有多个雇员，一个雇员只能效力于一各公司，公司和雇员之间知道彼此的存在，因此是双向一对多
+ * 在结构上可以看到 Company里有employees， Employee里有company，因此他们是双向的
+ * @author qianjia
+ */
+public class HqlTest {
+
+  public static void main(String[] args) {
+    SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
+    try {
+      Session session = sessionFactory.openSession();
+      session.beginTransaction();
+      {
+      }
+      session.getTransaction().commit();
+      session.close();
+
+    } finally {
+      sessionFactory.close();
+    }
+
+  }
+
+}
diff --git a/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/onetomany/bidirection/One2ManyBiTest.java b/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/onetomany/bidirection/One2ManyBiTest.java
index 77d16ff..d9029fc 100644
--- a/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/onetomany/bidirection/One2ManyBiTest.java
+++ b/hibernate-tutorial/src/main/java/com/supwisdom/tutorial/hibernate/onetomany/bidirection/One2ManyBiTest.java
@@ -87,7 +87,7 @@
   }
 
   public static void showDatas(Session session) {
-    List<Company> result = session.createQuery("from Company").list();
+    List<Company> result = session.createQuery("from Company where name like :cname").list();
     System.out.println("======= Company LIST =======");
     for (Company company : result) {
       System.out.println("Company: " + company.getName());
