Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.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
Java.lang.Object;不能强制转换为<;hibernate实体>;_Java_Hibernate_Jpql - Fatal编程技术网

Java.lang.Object;不能强制转换为<;hibernate实体>;

Java.lang.Object;不能强制转换为<;hibernate实体>;,java,hibernate,jpql,Java,Hibernate,Jpql,所以,我对Hibrate和Java一般来说都是新手。我已经看到了一些关于这个错误的帖子,但是没有一个适合我的情况。我有一个简单的JPQL查询,如下所示,它应该从函数表/实体返回函数ID和名称。此查询保存在my FunctionRepository.java中 @Query("SELECT func.functionId, func.functionName" + " FROM Function func") List<Function> findItAll(); ---

所以,我对Hibrate和Java一般来说都是新手。我已经看到了一些关于这个错误的帖子,但是没有一个适合我的情况。我有一个简单的JPQL查询,如下所示,它应该从函数表/实体返回函数ID和名称。此查询保存在my FunctionRepository.java中

@Query("SELECT func.functionId, func.functionName"
    + " FROM Function func")
List<Function> findItAll();



-----below is my FunctionService.java-------



public ArrayNode getAllFunctions() {
    ArrayNode json = null;
    try {
        List<Function> functions = (List<Function>) functionRepository.findItAll();
        json = crudEntitiesToJson(functions);
    } catch (CorruptDataException cdEx) {
        logger.error(cdEx.getMessage());
    }

    return json;
}
我想我不知道我错在哪里了


提前感谢。

您只选择实体的两个字段:

func.functionId, func.functionName

这意味着,查询将返回一个对象数组列表,每个数组包含两个元素,然后尝试将其转换为函数对象列表。那不行。在查询中添加映射步骤或选择整个实体。

选择单个列时,您不会得到类型(在您的情况下是函数),而是一个对象数组,如:
Object[]

所以试试:
List findItAll()

或者,如果可以获取所有列,您可以像Doleron的回答一样进行操作。

更改为

@Query("SELECT func FROM Function func") 
List<Function> findItAll();
@Query(“从函数func中选择func”)
List findItAll();
检索所有函数,而不是具有两个属性的数组。它还可以:

@Query("FROM Function") 
List<Function> findItAll();
@Query(“来自函数”)
List findItAll();

在JPQL中,SELECT子句定义要从数据库检索的对象类型。您不应该查询字段,而应该像这样查询整个对象:

SELECT func FROM Function func

您可以在上找到更多信息和示例。

这很有效!谢谢我接受了这个答案,因为它给出了经过完全修改的代码,但所有的建议/响应都大致相同。
@Query("FROM Function") 
List<Function> findItAll();
SELECT func FROM Function func