java.sql.SQLException: ORA-00932: 不一致的数据类型: 插入空时间戳时,预期的日期得到二



我有一个插入查询,与其他字段一起插入时间戳。现在,无论何时,时间戳的值为空,我都会收到错误 -

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

我正在使用甲骨文 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();

    }

虽然查询看起来很长,但您只能关注生成错误的时间戳字段。

有什么解决方法?

这对

我有用

 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

发生这种情况会导致您的表不允许last_modified_date的空值。

尝试在启动这样的查询之前检查输入值 lastModifiedDate 是否为 null 或 no

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

或者简单地像这样更改数据库:

ALTER TABLE table_name MODIFY COLUMN date TIMESTAMP NULL
当您

尝试将值从不同类型的列插入以获取更多详细信息时,会发生此oracle消息:

http://www.dba-oracle.com/sf_ora_00932_inconsistent_datatypes_expected_string_got_string.htm

现在插入日期值以更好地使用日历类或日期类。

相关内容

  • 没有找到相关文章

最新更新