如何使用条件api查询具有相同结构的两个SQL表?

时间:2015-11-30 15:08:42

标签: java sql-server hibernate jpa criteria-api

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

以下是我的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 {


}

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

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

}

如何查询两个表并将结果返回到没有Union函数的列表中?

1 个答案:

答案 0 :(得分:1)

我明白了。我没有使用inhertance来替换union函数,而是最终在数据库中创建了一个视图,它是两个表的并集,并将实体映射到视图。