2015-11-30 32 views
1

我有一个存档数据库,其中有两个具有相同结构的表,即活动的EvntSumaryT和存档的ArchiveEvntSumaryT。我想更改当前的标准api代码,它只查询EvntSumary,以便根据用户选择的日期从两个表中提取数据并将结果返回到列表中。 我的问题是,它们在hibernate-criteria中没有联合功能,所以我怎么能够一次查询两个表并将结果合并到一个列表中?如何使用条件api查询两个具有相同结构的SQL表?

下面是我的jpa实体类的代码。我已经将活动表的实体设置为父类,并将子项设置为ArchiveEvntSumaryT,因为它们共享相同的字段。

@Entity 
@Table(name="EVNT_SUMARY_T") 
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) 
public class EvntSumaryT { 
    //fields 
    //getters and setters 
} 

@Entity 
@Table(name="ARCHIVE_EVNT_SUMARY_T") 
public class ArchiveEvntSumaryT extends EvntSumaryT { 


} 

这是我的标准api查询在DAO类中归档数据库之前。

public List<EvntSumaryT> getAllTransaction(SearchCriteria sb) { 
    //criteria 
    return ls; 

} 

我该如何查询两个表并将结果返回到没有联合功能的列表中?

+0

JPA查询返回多态结果,没有任何特定的处理。如果你有根类作为候选者,那么子类实例也包括在内......除非你添加了一些WHERE子句,将它们限制在根类 –

+0

因此,如果我查询父类,它应该返回子类的结果太?但它并没有这样做。难道我设置遗传是错误的吗? –

+0

调试问题是通过查看日志中生成的SQL来完成的。 –

回答

1

我想通了。我没有使用inhertance替换union函数,而是在数据库中创建了一个视图,该视图是两个表的联合并将实体映射到视图。

相关问题