user9985168
user9985168

Reputation:

Ljava.lang.Object; cannot be cast to model

in this case, i want to show Json to an response page in java hibernate, query method from DAO like this:

public List<TransactionQR> getAllTransaction() throws HibernateException {
        return this.session.createQuery("FROM TransactionQR tr, Batch b, Terminal t, User_Smartphone us, Merchant mc WHERE tr.batch = b.id AND b.user_smartphone = us.id AND b.terminal = t.id AND t.merchant = mc.id AND state = '1' ").list();
    }

then in servlet class i try to convert the list into json using Json object and json array then write in response like this:

            int start = 0;
            String jsonResult = null;
            JSONObject jo=new JSONObject();

            HttpServletRequest request = context.getRequest();
            HttpServletResponse response = context.getResponse();

            HttpSession session = context.getSession();

            DB db = getDB(context);

            //JSONObject jo = new JSONObject();
            QRTransactionDao QR = new QRTransactionDao(db);
            //Gson objGson = new GsonBuilder().setPrettyPrinting().create();
            //String json = objGson.toJson(QR.getAllTransaction());

            //System.out.println(json);

            List<TransactionQR> str = QR.getAllTransaction();    
            JSONArray array = new JSONArray();

            for(TransactionQR tr : str){

                 JSONObject str3 = new JSONObject();
                 str3.put("amount", tr.getAmount());
                 context.put("jsoncontent", jsonResult);

                 array.add(str3);
            }

            jo.put("status", "ok");
            jo.put("dataqr", array);

            jsonResult=jo.toString();
            response.setContentType("application/json");
            response.getWriter().print(jsonResult);

but i got the error on syntax in this line loop:

for(TransactionQR tr : str){

the error like this:

[Ljava.lang.Object; cannot be cast to Transaction

here the model Transaction:

package id.co.keriss.consolidate.ee;

import java.io.Serializable;
import java.util.Date;
public class TransactionQR implements Serializable{
    private Long id;
    private String codeqr;
    private Date approvaltime;
    private String merchant;
    private String code_merchant;
    private Long amount;
    private Long saldoawal;
    private Integer tracenumber;
    private String state;
    private Date createdate;
    private Batch batch;

    public TransactionQR() {

    }

    public TransactionQR(Long id, String codeqr, Date approvaltime, String merchant, String code_merchant, Long amount,
            Long saldoawal, Integer tracenumber, String state, Date createdate, Batch batch) {
        super();
        this.id = id;
        this.codeqr = codeqr;
        this.approvaltime = approvaltime;
        this.merchant = merchant;
        this.code_merchant = code_merchant;
        this.amount = amount;
        this.saldoawal = saldoawal;
        this.tracenumber = tracenumber;
        this.state = state;
        this.createdate = createdate;
        this.batch = batch;
    }

    public Long getId() {
        return id;
    }
    public Date getApprovalTime() {
        return approvaltime;
    }

    public Batch getBatch() {
        return batch;
    }

    public void setBatch(Batch batch) {
        this.batch = batch;
    }

    public void setApprovalTime(Date approvalTime) {
        this.approvaltime = approvalTime;
    }
    public void setId(Long id) {
        this.id = id;
    }

    public Date getApprovaltime() {
        return approvaltime;
    }

    public void setApprovaltime(Date approvaltime) {
        this.approvaltime = approvaltime;
    }

    public String getCodeqr() {
        return codeqr;
    }

    public void setCodeqr(String codeqr) {
        this.codeqr = codeqr;
    }



    public String getMerchant() {
        return merchant;
    }

    public void setMerchant(String merchant) {
        this.merchant = merchant;
    }

    public String getCode_merchant() {
        return code_merchant;
    }

    public void setCode_merchant(String code_merchant) {
        this.code_merchant = code_merchant;
    }

    public Long getAmount() {
        return amount;
    }

    public void setAmount(Long amount) {
        this.amount = amount;
    }

    public Long getSaldoawal() {
        return saldoawal;
    }

    public void setSaldoawal(Long saldoawal) {
        this.saldoawal = saldoawal;
    }

    public Integer getTracenumber() {
        return tracenumber;
    }

    public void setTracenumber(Integer tracenumber) {
        this.tracenumber = tracenumber;
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }

    public Date getCreatedate() {
        return createdate;
    }

    public void setCreatedate(Date createdate) {
        this.createdate = createdate;
    }   
}

i have try to handle the list with Gson:

Gson objGson = new GsonBuilder().setPrettyPrinting().create();
String json = objGson.toJson(QR.getAllTransaction());

System.out.println(json);

in that way, it's work to show but it's not from POJO right i want work with pojo to parse the data to json ?

why i get the error can't cast to model ? any clue ?

Upvotes: 0

Views: 1628

Answers (2)

Mladen Savić
Mladen Savić

Reputation: 472

Try adding Select tr to your query in getAllTransaction()

Upvotes: 1

Iosif Mocanu
Iosif Mocanu

Reputation: 63

Wich is the relation between QRTransactionDao and TransactionQR ?

Upvotes: 0

Related Questions