2017-07-27 129 views
0
@NativeQuery 
    List<OperationUnit> findOperationUnitByOuTypeIDSql(@QueryParam("ouTypeId") Long ouTypeId, @QueryParam("isAvailable") Boolean isAvailable, RowMapper<OperationUnit> rowMapper); 

我的查詢:映射休眠布爾值SMALLINT PostgreSQL的

select * from t_au_operation_unit where OU_TYPE_ID = :ouTypeId and is_available = :isAvailable order by name asc; 

我有在Java中。隨着這個功能你可以看到,isAvailable是布爾類型。但是,Postgres db中的相關列是smallint類型。因此,我有這種錯誤

ERROR: operator does not exist: smallint = boolean

+0

爲什麼要將'boolean'存儲爲'smallint'而不是'boolean '? –

+0

因爲我做了從oracle到pgsql的數據庫轉換。在oracle中,列is_avaiable爲NUMBER(1),Pgsql中的相關類型爲smallint –

回答

0

的爲什麼不使用命名查詢 選擇運算從OperationUnit運算其中op.ouTypeId =:ouTypeId和op.isAvailable =:isAvailable

如果insits到使用本地查詢,您應該將參數isAvailible從布爾轉換爲整數(可能在客戶端發送給控制器之前) HTH

+0

如何將參數is_available從布爾轉換爲客戶端中的整數? –

+0

如果您發送Ajax請求很容易使URL = URL + isAvailible =?1:0如果使用彈簧模型更改模型有一個int值通過isAvailibe int getOtherAvilible(){return isAvilible? 1:0}並使用此參數 –