我想在我的Hibernate查詢中使用子查詢的功能,但我'我的數據庫表的白癡:)結構是:子查詢功能
CREATE TABLE standard (
id VARCHAR(12) NOT NULL ,
title VARCHAR(99) NOT NULL ,
description VARCHAR(999) NOT NULL ,
revision VARCHAR(99) NOT NULL ,
annotation TEXT NULL ,
PRIMARY KEY (id));
CREATE TABLE article (
id VARCHAR(12) NOT NULL ,
type INT(2) NOT NULL ,
classTitle VARCHAR(99) NULL ,
classDescription VARCHAR(999) NULL ,
standard_id VARCHAR(12) NULL ,
pubdate DATETIME NOT NULL ,
title VARCHAR(99) NULL ,
thumbnail TEXT NULL ,
text TEXT NULL ,
PRIMARY KEY (id));
什麼,我要做的就是獲得標準,其中包含具有指定類型的文章。我的想法是,我按照其類型篩選文章,然後按照其標準ID對它們進行分組,然後通過其ID標準獲取標準。
像這樣的東西:)
DetachedCriteria subquery = DetachedCriteria.forClass(Article.class)
.add(Restrictions.eq("type", Constants.ARTICLE_TYPE_INTERPRETATION))
.setProjection(Projections.groupProperty("standardId"));
List<Standard> stds = (List<Standard>) session.createCriteria(Standard.class)
.add(Restrictions.idEq(Subqueries.exists(subquery))).list();
但此查詢給了我所有的數據庫中的標準,儘管事實上,子查詢返回的唯一標準,我想。我知道問題出在哪裏:我無法寫出將通過subqery返回的標準過濾標準的限制。
有人可以給我一個提示如何做到這一點?
非常感謝!
的Ondrej
編輯: 由於@Rahul阿格拉瓦爾
List<Standard> stds = (List<Standard>) session.createCriteria(Standard.class)
.add(Subqueries.propertyIn("id", subquery)).list();
謝謝,'Subqueries.propertyIn'是我一直在尋找:) – s0vet 2012-08-09 10:04:12