2011-04-17 58 views
3

使用可不是我现在有两个表在冬眠如何在第

就业和生产

生产表都有它指的工作表的作业ID作业ID字段。

在冬眠如何在第

使用不

实现下面的SQL查询

SELECT * FROM工作,其中JOB_ID没有(从生产选择JOB_ID);

+1

您好我得到了答案是很简单的标准标准= session.createCriteria(BwJobs.class); DetachedCriteria detachedcriteria = DetachedCriteria.forClass(BwProduction.class); detachedcriteria.setProjection(Property.forName(“jobId”)); criteria.add(Property.forName(“jobId”)。notIn(detachedcriteria)); // Query query = session.createQuery(“from BwJobs”); jobsList = criteria.list(); – 2011-04-17 17:03:31

回答

1

您可以使用HQL:

List<Job> jobs = session.createQuery(
     "from Job where id not in (select jobId from Production)" 
    ).list(); 
0

我觉得not exist关键字是一个不错的选择。

假设我有一个名为“长颈鹿”,ID为主键,另一个名为“工程师”的表称为“长颈鹿”,将“长颈鹿”表称为外键,然后以下HQL查询工作对我来说:

from Giraffe giraffe where not exists (from Engineer as engineer where engineer.giraffe = giraffe.id)