gpt4 book ai didi

hibernate - 在 hibernate Ljava.lang.Object;不能转换为模型类型

转载 作者:行者123 更新时间:2023-12-05 04:16:52 25 4
gpt4 key购买 nike

我是 Hibernate 新手

我正在使用 spring 和 hibernate,我正在使用 HQl 查询从数据库中获取数据(使用 mysql)。我收到类型大小写错误

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

在 Dao 层上,我使用了代码。从查询中,我能够获得列表的确切大小。但无法从该列表中获取值。它给出了 TypeCast 错误EmployeePayment 是模型的名称

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

员工支付.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;
}

最佳答案

如果你想得到你的实体对象,你应该使用结果转换器;

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

关于hibernate - 在 hibernate Ljava.lang.Object;不能转换为模型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26088581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com