Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.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 使用spring Crudepository的自定义查询_Java_Spring_Spring Boot_Spring Data Jpa - Fatal编程技术网

Java 使用spring Crudepository的自定义查询

Java 使用spring Crudepository的自定义查询,java,spring,spring-boot,spring-data-jpa,Java,Spring,Spring Boot,Spring Data Jpa,我正在学习JPA框架,但我无法进行自定义查询 我已经完成了本教程: 现在我想做一个自定义查询,例如“从客户中选择firstName,lastName” 我试过: public interface CustomerRepository extends CrudRepository<Customer, Long> { @Query("SELECT firstName,lastName FROM Customer") Iterable<Customer> fi

我正在学习JPA框架,但我无法进行自定义查询

我已经完成了本教程: 现在我想做一个自定义查询,例如
“从客户中选择firstName,lastName”

我试过:

public interface CustomerRepository extends CrudRepository<Customer, Long> {

    @Query("SELECT firstName,lastName FROM Customer")
    Iterable<Customer> findAll();

    List<Customer> findByLastName(String lastName);
}
测试我的自定义查询

我希望记录每个客户的数据,但这给我带来了一个例外:
java.lang.ClassCastException:[Ljava.lang.Object;无法强制转换为hello.Customer

您可以使用
@Query(“从客户中选择新的.package.Customer(firstName,lastName))

获取所需的对象。如果您想要一个只包含firstname和lastname的对象,我将使用另一个对象。

您可以使用
@Query(“从客户中选择新的.package.Customer(firstName,lastName))


获取您想要的对象。如果您想要一个只有firstname和lastname的对象,我将使用另一个对象。

删除查询注释。
@query(“从客户选择firstname,lastname”)
此查询实际上返回元组列表
对象[]
,而不是
Customer
s您应该发布实体客户和表客户,以查看是否所有内容都匹配。但您似乎没有返回客户。请尝试以下方式更改sql:@Query(“从客户c中选择c”)Iterable findAll();或者完全删除它,因为findAll已在Crudepository中实现。我想进行一个查询,仅选择firstName和lastName,而不是所有数据@XavierBouclet您可以在我发布的教程中查看所有这些代码删除查询注释。
@query(“从客户处选择firstName,lastName”)
此查询实际上返回元组列表
Object[]
,而不是
Customer
s您应该发布实体Customer和表Customer以查看是否所有内容都匹配。但似乎您没有返回Customer。请尝试通过以下方式更改sql:@query(“从客户c中选择c”)Iterable findAll();或者完全删除它,因为findAll已经在Crudepository中实现。我想做一个查询,只选择firstName和lastName,而不是所有数据@XavierBouclet。您可以在我给出的教程中查看所有这些代码
for (Customer customer : repository.findAll()) {
                log.info(customer.toString());
            }