我有两个彼此无关的类,映射到两个单独的数据库表。我希望在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());
}
}
但是,检索到的结果不包含上面第二个子查询的结果(但它确实将数据作为独立查询返回)。
如果这不是正确的方法,我想知道如何在单个数据库命中中查询两个不相关的对象。请注意,这两个类没有任何关系或任何公共基类。这只是为了减少数据库命中数而尝试的,因为我知道每次我都需要来自两个表的对象。