2017-05-29 71 views
1

我有一個插入查詢與其他字段一起插入Timestamp。現在無論何時,Timestamp的值爲空,我得到的錯誤 -java.sql.SQLException:ORA-00932:數據類型不一致:預期DATE在插入空時戳時得到了BINARY

java.sql.SQLException: ORA-00932: inconsistent datatypes: expected DATE got BINARY 

我使用的是oracle 11g。

查詢是:

@Modifying 
@Query(value ="INSERT INTO mams_asset a (a.mams_asset_id, a.mams_folder_id, a.asset_name, a.gist, a.last_modified_date, a.last_exported_date, a.created_date) VALUES (hextoraw(?1), hextoraw(?2), ?3, ?4, ?5, ?6 , ?7)" , nativeQuery = true) 
int insertIntoMamsAsset(String mamsAssetId, String mamsFolderId, String assetName, String gist, Timestamp lastModifiedDate, Timestamp lastExportedDate, Timestamp createdDate); 

這是雖然彈簧數據JPA之一。我試圖用這種方法太多,但同樣的錯誤:

public int insertIntoMamsAsset(String mamsAssetId, String mamsFolderId, String assetName, String gist, Timestamp lastModifiedDate, Timestamp lastExportedDate, Timestamp createdDate){ 

     final Query query = entityManager.createNativeQuery("INSERT INTO mams_asset a (a.mams_asset_id, a.mams_folder_id, a.asset_name, a.gist, a.last_modified_date, a.last_exported_date, a.created_date) VALUES (hextoraw(?), hextoraw(?), ?, ?, ?, ? , ?)") 
       .setParameter(1, mamsAssetId) 
       .setParameter(2,mamsFolderId) 
       .setParameter(3,assetName) 
       .setParameter(4,gist) 
       .setParameter(5,lastModifiedDate) 
       .setParameter(6,lastExportedDate) 
       .setParameter(7,createdDate); 

     return query.executeUpdate(); 


    } 

雖然查詢似乎長,但你可以只專注於時間戳字段,這就是正在產生錯誤。

這是什麼工作?

回答

0

這爲我工作

final Query query = entityManager.createNativeQuery("INSERT INTO mams_asset a (a.mams_asset_id, a.mams_folder_id, a.asset_name, a.gist, a.last_modified_date, " + 
       "a.last_exported_date, a.created_date) VALUES (hextoraw(?), hextoraw(?), ?, ?, ?, ? , ?)") 
       .setParameter(1, mamsAssetId) 
       .setParameter(2, mamsFolderId) 
       .setParameter(3, assetName) 
       .setParameter(4, gist) 
       .setParameter(5, lastModifiedDate, TemporalType.TIMESTAMP) 
       .setParameter(6, lastExportedDate, TemporalType.TIMESTAMP) 
       .setParameter(7, createdDate, TemporalType.TIMESTAMP); 

我的setParameter添加TemporalType.TIMESTAMP

0

它發生導致您的表不承認last_modified_date的空值。檢查

嘗試,如果輸入值lastModifiedDate爲空或沒有之前launche查詢這樣

if(lastModifiedDate = null){ 
Timestamp myModifiedDate = new Timestamp(0001-01-01 00:00:00); 
} 

或者簡單地改變這樣的數據庫:

ALTER TABLE table_name MODIFY COLUMN date TIMESTAMP NULL 
相關問題