Hibernate:返回不同类型对象的两个查询的联合

时间:2017-10-17 06:49:34

标签: hibernate union

我有两个彼此无关的类,映射到两个单独的数据库表。我希望在SINGLE DB命中时从一个表中检索两个对象,从另一个表中检索两个对象。我尝试了以下内容:

Query query = session.createQuery("select i from ReconcileInterface i where i.AID in ('1-1-2') "
    + " union select d from ReconcileDevice d where d.TID in ('NPHLOHTAPPANLAKE688') " );

List<? extends Object> records = query.list();

for (Object value : records) {
    if (value instanceof ReconcileInterface) {
        System.out.println("Interface:" + ((ReconcileInterface)value).getAID());
    } else if (value instanceof ReconcileDevice) {
        System.out.println("Device:" + ((ReconcileDevice) value).getTID());
    }
}

但是,检索到的结果不包含上面第二个子查询的结果(但它确实将数据作为独立查询返回)。

如果这不是正确的方法,我想知道如何在单个数据库命中中查询两个不相关的对象。请注意,这两个类没有任何关系或任何公共基类。这只是为了减少数据库命中数而尝试的,因为我知道每次我都需要来自两个表的对象。

0 个答案:

没有答案