2015-11-30 47 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函數,而是在數據庫中創建了一個視圖,該視圖是兩個表的聯合並將實體映射到視圖。

相關問題