0

Getting the java.lang.ClassCastException: java.lang.String cannot be cast to java.sql.Clob Error when trying to convert String into Clob type . we are using Mysql database .java side we are using Hibernate NativeQuery .

Query nativeQuery= entityManager.createNativeQuery(QueryConstants.GetDbDetails);
        
        nativeQuery.unwrap(SQLQuery.class)
        .setParameterList("crisilTicker", crisilTickerList);
        
        
        List<Object[]> list=nativeQuery.getResultList();
        try{
            if(list !=null && !list.isEmpty()){
                for(Object[] obj :list){
                    java.sql.Clob clobevalue =(java.sql.Clob) obj[0];
                    String metaDataStr =clobevalue.getSubString(1, (int) clobevalue.length());
                    JSONObject metaDataJson =new JSONObject(metaDataStr);
                    JSONObject metaData = metaDataJson.getJSONObject("sheetMetadata");
                    Iterator<String> keys = metaData.keys();
                    while (keys.hasNext()) {

getting java.lang.ClassCastException: java.lang.String cannot be cast to java.sql.Clob error

flyingfox
  • 13,414
  • 3
  • 24
  • 39
Dorayya
  • 11
  • 1
  • 6

2 Answers2

0

Have you tried to cast to String instead of Clob type?

String metaDataStr = (String) obj[0];

And remove this line in your code

java.sql.Clob clobevalue =(java.sql.Clob) obj[0];
Hưng Chu
  • 1,027
  • 5
  • 11
0

If you want to cast String to Clob, use below :-

 java.sql.Clob clobevalue = new new javax.sql.rowset.serial.SerialClob(((String)obj[0]).toCharArray());
Gaurav Dhiman
  • 953
  • 6
  • 11