मेरे पास एक सम्मिलित क्वेरी है जहाँ अन्य क्षेत्रों के साथ, मैं टाइमस्टैम्प सम्मिलित कर रहा हूँ। अब जब भी, टाइमस्टैम्प का मान शून्य है, मुझे त्रुटि मिल रही है -

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

मैं ओरेकल 11 जी का उपयोग कर रहा हूँ।

क्वेरी है:

@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);

हालांकि यह स्प्रिंग डेटा जेपीए वन है। मैंने भी इस दृष्टिकोण का उपयोग करने की कोशिश की लेकिन एक ही त्रुटि:

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();


    }

हालांकि क्वेरी लंबी लगती है लेकिन आप केवल टाइमस्टैम्प फ़ील्ड पर ध्यान केंद्रित कर सकते हैं जो त्रुटि उत्पन्न कर रहा है।

इसके लिए कामकाज क्या है?

2
Number945 29 मई 2017, 11:32

3 जवाब

सबसे बढ़िया उत्तर

यह मेरे लिए काम किया

 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);

मैंने सेट पैरामीटर में TemporalType.TIMESTAMP जोड़ा।

3
Number945 16 पद 2017, 13:29

ऐसा इसलिए होता है क्योंकि आपकी तालिका last_modified_date के लिए शून्य मान स्वीकार नहीं करती है।

इस तरह की क्वेरी लॉन्च करने से पहले यह जांचने की कोशिश करें कि इनपुट वैल्यू lastModifiedDate शून्य है या नहीं

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

या बस इस तरह डेटाबेस बदलें:

ALTER TABLE table_name MODIFY COLUMN date TIMESTAMP NULL
0
travis_91 30 मई 2017, 18:20

यह ऑरैकल संदेश तब होता है जब आप अधिक विवरण के लिए विभिन्न प्रकार के कॉलम में मान डालने का प्रयास करते हैं:

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

अब कैलेंडर वर्ग या दिनांक वर्ग का उपयोग करने के लिए बेहतर दिनांक मान सम्मिलित करने के लिए।

0
Yunus 1 जून 2017, 14:01