Java 使用spring Crudepository的自定义查询
我正在学习JPA框架,但我无法进行自定义查询 我已经完成了本教程: 现在我想做一个自定义查询,例如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
“从客户中选择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());
}