2

Retrieving integer value from table using Hibernate, following exception occurred,

java.lang.ClassCastException: java.lang.Integer cannot be cast to pojo.Datasetstatus

String q1="SELECT datasetstatusID from datasetstatus where DatasetID='"+meta_dataset+"'";
Query query=session.createSQLQuery(q1);
List<Datasetstatus> dobj=query.list();
for(Datasetstatus dobj1: dobj) {        
    System.out.println("Value   :: "+dobj1.getDatasetStatusId());
    }

Pojo class format,

    public class Datasetstatus implements java.io.Serializable {

    private Integer datasetStatusId;    
    private String datasetId;

    public Datasetstatus(String datasetId) {
        this.datasetId = datasetId;
    }

    public Integer getDatasetStatusId() {
        return this.datasetStatusId;
    }

    public void setDatasetStatusId(Integer datasetStatusId) {
        this.datasetStatusId = datasetStatusId;
    }

    public String getDatasetId() {
        return this.datasetId;
    }

    public void setDatasetId(String datasetId) {
        this.datasetId = datasetId;
    }
}

If any suggestions for solving this problem

2
  • Can you update your code showing us all the annotations on the Pojo class? Which line is your code crashing on? Commented May 5, 2015 at 10:11
  • for(Datasetstatus dobj1: dobj) { System.out.println("Value :: "+dobj1.getDatasetStatusId()); }, i checked code crash on for loop ( Elements retrieve integer format) Commented May 5, 2015 at 10:17

4 Answers 4

1

You need to change your query to this:

List<Integer> dobj=
    (List<Integer>) session.createSQLQuery(
        "SELECT ds.datasetstatusID " +
        "from datasetstatus ds " +
        "where ds.datasetId = :dataSetId")
    .setParameter("dataSetId", meta_dataset)
    .list();

The datasetstatusID is an integer not a Datasetstatus.

If you want to return Datasetstatus instead, the your query would be:

List<Datasetstatus> dobj=
    (List<Datasetstatus>) session.createSQLQuery(
    "SELECT ds " +
    "from datasetstatus ds " +
    "where ds.datasetId = :dataSetId")
.setParameter("dataSetId", meta_dataset)
.list();
Sign up to request clarification or add additional context in comments.

Comments

1

There appears to be a problem with your query. You used the following SQL:

SELECT datasetstatusID from datasetstatus where DatasetID = meta_dataset

But you should be using HQL instead:

from datasetstatus d where d.datasetID = meta_dataset

Here is your modified code:

String q1 = "from datasetstatus d where d.datasetID = :datasetID";
Query query = session.createSQLQuery(q1)
.setParameter("datasetID", meta_dataset);
List<Datasetstatus> dobj = query.list();
for (Datasetstatus dobj1 : dobj) {        
    System.out.println("Value   :: " + dobj1.getDatasetStatusId());
}

Comments

1

You are access particular attribute from the pojo class not an pojo object, then only you are facing java.lang.Integer cannot be cast to pojo.Datasetstatus you can try,

 String q1="SELECT a from datasetstatus as a whereDatasetID='"+meta_dataset+"'";
Query query=session.createQuery(q1);
    List<Datasetstatus> dobj=(List<Datasetstatus>) query.list();
    for(Datasetstatus dobj1: dobj) {        
        System.out.println("Value   :: "+dobj1.getDatasetStatusId());
   }

if you try the above code you will get a answer. or you can try below code as well,

String q1="SELECT a.datasetstatusID from datasetstatus as a whereDatasetID='"+meta_dataset+"'";
    Query query=session.createSQLQuery(q1);
        List<Object[]> dobj=query.list();
        for(Object dobj1: dobj) {        
            System.out.println("Value   :: "+dobj1.get[0]);
       }

2 Comments

Senthil create chat room after add me in chat room, i can't create chat room, need 100 reputation points
Senthil i checked first code not working it throws java.lang.ClassCastException
0

If you are retrieving the single column value then ideally you should not go for POJO Class instead of that you can directly cast it to List<Integer>

List<Integer> dobj = query.list();

for(Integer dobj1: dobj) {        
    System.out.println("Value   :: "+dobj1);
}

This will solve your problem

1 Comment

I checked your code but not working. exception occured "Could not extract ResultSet"

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.