Sql JPQL查询:不敏感地按大小写使用订单
使用线程(这非常有用),因此我对may jpql查询也做了同样的操作(非常简单,只需选择所有记录,但需要按“名称”字段排序): 我正在使用openjpa,不幸的是应用程序给了我Sql JPQL查询:不敏感地按大小写使用订单,sql,jakarta-ee,jpa,jpql,openjpa,Sql,Jakarta Ee,Jpa,Jpql,Openjpa,使用线程(这非常有用),因此我对may jpql查询也做了同样的操作(非常简单,只需选择所有记录,但需要按“名称”字段排序): 我正在使用openjpa,不幸的是应用程序给了我 java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.myname.app.UserGroup 运行整个jpql的代码如下所示: public static List<UserGroup> findAllUserGr
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.myname.app.UserGroup
运行整个jpql的代码如下所示:
public static List<UserGroup> findAllUserGroups(){
return entityManager().createQuery("SELECT o, LOWER(o.name) AS nameInOrder FROM UserGroup o ORDER BY nameInOrder ASC", UserGroup.class).getResultList();
}
公共静态列表findAllUserGroups(){
返回entityManager();
}
我猜,似乎整个管理者都把o
作为一个对象,而把LOWER(o.name)
作为另一个对象
请帮助,确实看不到任何问题,但OpenJPA(v2.2)不起作用。根据您链接到的线程,此查询的返回类型是
List
,而不是List
一种方法是保持查询不变,并通过循环将用户组从列表中拉出:
List<Object[]> results = entityManager().createQuery("SELECT o, LOWER(o.name) AS nameInOrder FROM UserGroup o ORDER BY nameInOrder ASC", UserGroup.class).getResultList();
List<UserGroup> userGroups = new ArrayList<UserGroup>();
for(Object[] result : results) {
userGroups.add( result[0] );
}
return userGroups;
List results=entityManager().createQuery(“从UserGroup o ORDER BY nameInOrder ASC中选择o,LOWER(o.name)作为nameInOrder”,UserGroup.class。)getResultList();
List userGroups=new ArrayList();
对于(对象[]结果:结果){
添加(结果[0]);
}
返回用户组;
根据链接到的线程,此查询的返回类型为List
,而不是List
一种方法是保持查询不变,并通过循环将用户组从列表中拉出:
List<Object[]> results = entityManager().createQuery("SELECT o, LOWER(o.name) AS nameInOrder FROM UserGroup o ORDER BY nameInOrder ASC", UserGroup.class).getResultList();
List<UserGroup> userGroups = new ArrayList<UserGroup>();
for(Object[] result : results) {
userGroups.add( result[0] );
}
return userGroups;
List results=entityManager().createQuery(“从UserGroup o ORDER BY nameInOrder ASC中选择o,LOWER(o.name)作为nameInOrder”,UserGroup.class。)getResultList();
List userGroups=new ArrayList();
对于(对象[]结果:结果){
添加(结果[0]);
}
返回用户组;
为了记录在案,下面是我根据jonc的建议实现的
// find all groups in order
public static List<UserGroup> findAllUserGroups(){
List<Object> results = entityManager().createQuery("SELECT o, LOWER(o.name) AS nameInOrder FROM UserGroup o ORDER BY nameInOrder ASC", Object.class).getResultList();
List<UserGroup> userGroups = new ArrayList<UserGroup>();
for(Object result : results) {
Object[] resultArray = (Object[])result;
userGroups.add((UserGroup)resultArray[0]);
}
return userGroups;
}
为了记录在案,下面是我按照jonc的建议实现的
// find all groups in order
public static List<UserGroup> findAllUserGroups(){
List<Object> results = entityManager().createQuery("SELECT o, LOWER(o.name) AS nameInOrder FROM UserGroup o ORDER BY nameInOrder ASC", Object.class).getResultList();
List<UserGroup> userGroups = new ArrayList<UserGroup>();
for(Object result : results) {
Object[] resultArray = (Object[])result;
userGroups.add((UserGroup)resultArray[0]);
}
return userGroups;
}
这是一个很好的发现!我太沮丧了,没有在那个帖子上完成全部答案:)这是一个很好的发现!我太沮丧了,没能在那个帖子上完整回答:)