Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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 如何使用@Query获取可选值_Java_Spring Boot_Java 8_Spring Data Jpa - Fatal编程技术网

Java 如何使用@Query获取可选值

Java 如何使用@Query获取可选值,java,spring-boot,java-8,spring-data-jpa,Java,Spring Boot,Java 8,Spring Data Jpa,我有一个带有一些查询的customer repository类 @Repository public interface CustomerRepository extends JpaRepository<Customers, Long>, JpaSpecificationExecutor<Customers> { @Query("select c from Customers c where c.id = ?1 and c.deleted = false")

我有一个带有一些查询的customer repository类

@Repository
public interface CustomerRepository extends JpaRepository<Customers, Long>, JpaSpecificationExecutor<Customers> {
   @Query("select c from Customers c where c.id = ?1 and c.deleted = false")
   Optional<Customers> findCustomerById(Long id);
}    
运行应用程序时,我收到以下消息

原因:org.hibernate.QueryException:无法解析属性:已删除的:com.ntric.hariom.inventory.domain.Customers 位于org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:73) 位于org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:67) 位于org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1873) 位于org.hibernate.hql.internal.ast.tree.FromElementType.getPropertyType(FromElementType.java:393)

堆栈跟踪非常大,所以我只粘贴错误部分

原因:org.hibernate.QueryException:无法解析属性: 删除

这是因为该属性被称为
isDeleted
。将其重命名为
deleted
,这部分问题将得到解决。此外,它还可以将getter命名为
isDeleted
,这更适合于布尔值

现在进入问题的第二部分,这更像是关于改进的建议。您不需要本机查询,下面的查询方法应该可以完成这项工作

Optional<Customer> findByIdAndDeletedFalse(Long id);
可选findbyianddeletedfalse(长id);

请注意,实体已重命名,这使其更容易混淆。

能否显示代码我最近编辑的问题与我的问题完全不同。发布异常的完整而准确的堆栈跟踪,并发布Customers实体的代码(应该真正命名为Customer)。同时发布存储库的完整代码,包括导入。现在错误似乎与entity class@MilanPaudyal中的“deleted”属性有关。请将字段
isDeleted
重命名为
deleted
Optional<Customer> findByIdAndDeletedFalse(Long id);