user3090158
user3090158

Reputation: 141

IN hibernate Ljava.lang.Object; cannot be cast to Model type

I am new in Hibernate

I am using spring with hibernate ,I am using HQl query to get data from database(Using mysql). I am getting Type case error

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.dineshonjava.model.EmployeePayment
at com.dineshonjava.dao.EmployeePaymentDaoImpl.listEmployeesPayment(EmployeePaymentDaoImpl.java:35)
at com.dineshonjava.service.EmployeePaymentServiceImpl.listEmployeesPayment(EmployeePaymentServiceImpl.java:31)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:108)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy22.listEmployeesPayment(Unknown Source)
at com.dineshonjava.controller.EmployeeController.listEmployeesPaymentDetail(EmployeeController.java:152)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod(HandlerMethodInvoker.java:710)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:167)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:414)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:402)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at 

On Dao Layer I have used Code.From query I am able to get the exact Size of List.But unable to get the value from That List.It's Giving TypeCast Error EmployeePayment is the name of model

@SuppressWarnings("unchecked")
public List<EmployeePayment> listEmployeesPayment() {

    List<EmployeePayment> empList = (List<EmployeePayment>) sessionFactory
            .getCurrentSession()
            .createQuery(
                    "select e.employeePaymentId ,e.paymentDate,e.comment,e.amount from EmployeePayment e ,Employee e1 where e1.empId= e.employee")
            .list();
    List<EmployeePayment> myList = new ArrayList<EmployeePayment>();

    System.out.println("emplist size" + empList.size());
    Iterator iter = empList.iterator();
    while (iter.hasNext()) {

        EmployeePayment c = new EmployeePayment();
        c = (EmployeePayment) iter.next();
        System.out.println(" customer comment is :" + c.getComment());
    }
    return empList;
}

EmployeePayment.java

package com.dineshonjava.model;

  import javax.persistence.Column;
  import javax.persistence.Entity;
  import javax.persistence.GeneratedValue;
  import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
 import javax.persistence.Table;
 @Entity
 @Table(name="employee_payment")
  public class EmployeePayment {
   @Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "employeePaymentId")
private Integer employeePaymentId;

@Column(name ="comment")
private String  comment;

@Column(name ="paymentDate")
private String paymentDate;

@Column(name ="amount")
private Integer amount;

@ManyToOne  
 @JoinColumn(name = "empid") 
private Employee employee;

public Integer getEmployeePaymentId() {
    return employeePaymentId;
}
public void setEmployeePaymentId(Integer employeePaymentId) {
    this.employeePaymentId = employeePaymentId;
}
public void setAmount(Integer amount) {
    this.amount = amount;
}
public String getComment() {
    return comment;
}
public void setComment(String comment) {
    this.comment = comment;
}
public String getPaymentDate() {
    return paymentDate;
}
public void setPaymentDate(String paymentDate) {
    this.paymentDate = paymentDate;
}


public Integer getAmount() {
    return amount;
}
public Employee getEmployee() {
    return employee;
}
public void setEmployee(Employee employee) {
    this.employee = employee;
}

}

Upvotes: 3

Views: 5449

Answers (2)

Darshan Lila
Darshan Lila

Reputation: 5868

Try it following way:

 List<EmployeePayment> empList = (List<EmployeePayment>) sessionFactory
            .getCurrentSession()
            .createQuery(
                    "select e from EmployeePayment e ,Employee e1 where e1.empId= e.employee")
            .list();

Upvotes: 1

Petar Butkovic
Petar Butkovic

Reputation: 1900

If you want to get your entity objects you should use result transformer;

    List<EmployeePayment> empList = (List<EmployeePayment>) sessionFactory
            .getCurrentSession()
            .createQuery(
                    "select e.employeePaymentId  as employeePaymentId, e.paymentDate as paymentDate, e.comment as comment, e.amount as amount from EmployeePayment e ,Employee e1 where e1.empId= e.employee")
            .setResultTransformer(Transformers.aliasToBean(EmployeePayment.class))
            .list();

Upvotes: 2

Related Questions