如何在不使用查询的情况下在hibernate中选择此查询等位置

时间:2013-06-04 18:50:10

标签: java sql hibernate nosql hql

我的hibernate文件中有以下函数:

try {
  SessionFactory sessFact = new Configuration()
  .configure("/org/test/tutorial/hibernate.cfg.xml").buildSessionFactory();
  Session sess = sessFact.openSession();
  Transaction tran = sess.beginTransaction();
  List<testModel> hostsInHostclass = sess.createSQLQuery("SELECT * FROM Employee where Employer like '"+ANY INPUT+"'").addEntity(tut_model.class).list(); 

    } catch (HibernateException he) {
        throw new DependencyException("DB Error: " + he.getMessage());
    }

现在,写这个就是打败了hibernate的目的,因为我必须实际指定查询。我有什么方法可以隐含地这样做吗?

假设我的模型文件是正确的。它有四列:员工,雇主,年龄和性别。请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

使用此:

sess.createQuery("from Employee e where e.employer = :emp").
        setEntity("emp", anEmployerInstance).list();

其中Employee是您实体的名称,employerEmployee类中与Employer数据库字段emp匹配的属性的名称是一个任意名称,anEmployerInstanceEmployer类的实例。

我认为在这个答案中Employer是另一个实体,所以我使用了setEntity()方法。但我无法确定,因为我无法访问Employee实体代码。