【发布时间】:2020-01-28 05:25:31
【问题描述】:
我正在尝试从数据库中获取数据并将其映射到不同的实体,但我得到了
java.lang.IllegalArgumentException: java.lang.ArrayIndexOutOfBoundsException: 0
我的桌子看起来像
@Entity
@Table(name = "Student")
@NamedNativeQueries({
@NamedNativeQuery(name = "findAll", query = "Select a.student_id as id, a.student_code as code from Student a")
})
public class Student {
@Id
private Long student_id;
private String student_code;
private String student_user_id;
private String student_first_name;
//Some other fields, getters and setters
}
我的 BO 看起来像
@Entity
public class Generic{
@Id
private Long id;
private String code;
private String user_id;
//getters and setters
}
我的 DAO 调用类是这样的
Query query = entityManager.createNamedQuery("findAll", Generic.class);
query.getResultList();
我得到异常
entityManager.createNamedQuery("findAll", Generic.class);
这是我的堆栈跟踪
Caused by: java.lang.IllegalArgumentException: java.lang.ArrayIndexOutOfBoundsException: 0
at org.hibernate.internal.AbstractSharedSessionContract.buildQueryFromName(AbstractSharedSessionContract.java:774)
at org.hibernate.internal.AbstractSharedSessionContract.createNamedQuery(AbstractSharedSessionContract.java:869)
at org.hibernate.internal.AbstractSessionImpl.createNamedQuery(AbstractSessionImpl.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:301)
at com.sun.proxy.$Proxy157.createNamedQuery(Unknown Source)
【问题讨论】:
-
能否请您简要介绍一下异常跟踪,pojo 类中是否有接受这两个变量 a.student_id 作为 id、a.student_code 的构造函数
-
您使用的是哪个
hibernate-orm版本?
标签: java hibernate jpa spring-data-jpa