Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择表的子集时,hibernate不会将其自动强制转换到列表中的业务域对象中_Sql_Hibernate_Select - Fatal编程技术网

Sql 选择表的子集时,hibernate不会将其自动强制转换到列表中的业务域对象中

Sql 选择表的子集时,hibernate不会将其自动强制转换到列表中的业务域对象中,sql,hibernate,select,Sql,Hibernate,Select,当我选择满桌时 i、 e.从产品中选择* ,Hibernate返回产品对象列表。但是,当我只选择其中的一个子集时 i、 e.从产品中选择名称、价格 ,Hibernate返回一个对象列表,但无法将其转换为现成的产品对象列表。任何将其强制转换为产品对象列表的尝试都会导致ClassCastException @SuppressWarnings("unchecked") @Override public List<UserRoleAndProgramCategory> get(int rol

当我选择满桌时

i、 e.从产品中选择*

,Hibernate返回产品对象列表。但是,当我只选择其中的一个子集时

i、 e.从产品中选择名称、价格

,Hibernate返回一个对象列表,但无法将其转换为现成的产品对象列表。任何将其强制转换为产品对象列表的尝试都会导致ClassCastException

@SuppressWarnings("unchecked")
@Override
public List<UserRoleAndProgramCategory> get(int roleId, int programCategoryId) {
    String sHql;
    String[] key;
    Object[] value;

    key = new String[] { "roleId", "programCategoryId" };
    value = new Integer[] { roleId, programCategoryId };

    sHql = "select distinct l.userId, l.userName, l.fullName, l.roleId, l.roleName, l.roleCode, l.programCategoryId, l.programCategoryCode, l.programCategoryDescription from "
            + UserRoleAndProgramCategory.class.getName()
            + " as l where roleName <> ' ' and roleCode not in ('CONTRACTOR', 'ADMIN') and programCategoryId = :programCategoryId and roleId = :roleId";

    return (List<UserRoleAndProgramCategory>) super.getQueryWithCache(sHql, key, value, false, false, false)
            .getQueryResult();
}
@SuppressWarnings(“未选中”)
@凌驾
公共列表获取(int roleId,int programCategoryId){
字符串sHql;
字符串[]键;
对象[]值;
key=新字符串[]{“roleId”,“programCategoryId”};
值=新整数[]{roleId,programCategoryId};
sHql=“从中选择不同的l.userId、l.userName、l.fullName、l.roleName、l.roleName、l.roleCode、l.programCategoryId、l.programCategoryCode、l.programCategoryDescription”
+UserRoleAndProgramCategory.class.getName()
+“如l所示,其中roleName“”和roleCode不在('CONTRACTOR'、'ADMIN')和programCategoryId=:programCategoryId和roleId=:roleId中”;
return(List)super.getQueryWithCache(sHql,key,value,false,false)
.getQueryResult();
}
多谢各位。请告诉我哪里出了问题。

请阅读

为了从选择特定属性的查询中返回对象列表,需要使用别名to Bean transformer

(对于SQL查询,但HQL的工作原理相同)

sHql=“从中选择不同的新UserRoleAndProgramCategory(l.userId、l.userName、l.fullName、l.roleId、l.roleName、l.roleCode、l.programCategoryId、l.programCategoryCode、l.programCategoryDescription)”
+UserRoleAndProgramCategory.class.getName()
+“如l所示,其中roleName“”和roleCode不在('CONTRACTOR'、'ADMIN')和programCategoryId=:programCategoryId和roleId=:roleId中”;

我在Hibernate的论坛上找到了这个查询并返回类的两个属性,结果是长度为2的数组列表;现在只需考虑哪些内容可以适当地作为该数组的元素返回。。。第一个位置可能对应于请求的第一个属性,而第二个位置对应于第二个属性,这似乎是有道理的。现在,这些回报的类型可能是什么?Hrrrmmm?对应属性类型的java类型可能是什么?能这么简单吗?“[链接]谢谢你的提醒。我现在就试试。
sHql = "select distinct new UserRoleAndProgramCategory(l.userId, l.userName, l.fullName, l.roleId, l.roleName, l.roleCode, l.programCategoryId, l.programCategoryCode, l.programCategoryDescription) from "
            + UserRoleAndProgramCategory.class.getName()
            + " as l where roleName <> ' ' and roleCode not in ('CONTRACTOR', 'ADMIN') and programCategoryId = :programCategoryId and roleId = :roleId";