当前位置: 首页 > 知识库问答 >
问题:

Spring数据JPA——where子句中的许多列

子车鸿运
2023-03-14

我需要确定一个实体是否已经被持久化。不幸的是,我没有这个id,但是如果实体的其他六个字段的值与一个持久化的实体相匹配,我可以确定实体已经持久化了。我正在使用Spring JPA存储库,并且知道我可以执行以下操作:

Test findByField1AndField2And...(String field1, String field2,...)

有没有类似的方法:

 @Query("SELECT t "
           + "FROM Test t "
           + "WHERE "
           + "t.field1 = :testWithSomeFieldsPopulated.field1 and "
           + "t.field2 = :testWithSomeFieldsPopulated.field2 and ..." ) 
Test findByTest(@Param("testWithSomeFieldsPopulated") Test testWithSomeFieldsPopulated)

共有1个答案

翟承志
2023-03-14

如果您正在使用Spring Data JPA 1.7.0或更高版本,那么您可以通过在您的@Query定义中使用SpEL来实现这一点。所以类似这样的东西:

@Query("SELECT t "
           + "FROM Test t "
           + "WHERE "
           + "t.field1 = :#{#testWithSomeFieldsPopulated.field1} and "
           + "t.field2 = :#{#testWithSomeFieldsPopulated.field2} and ..." ) 
Test findByTest(@Param("testWithSomeFieldsPopulated") Test testWithSomeFieldsPopulated)
 类似资料:
  • 我是JPA的新手。使用where子句构建select查询。我需要从表Contacts中选择所有等于字符串名称值的ContactName。 以下是执行我的项目时出现的错误:java.lang.IllegalArgumentException:无法根据在org.hibernate.jpa.criteria.path.abstractPathimpl.unknownatAttribute(abstrac

  • 我正在使用Spring JPA执行所有数据库操作。但是,我不知道如何在Spring JPA中从表中选择特定的行(通过简单的WHERE子句连接)? 用户类: 存储库:

  • 问题内容: 在JPA中,查询为: 如何在JPA中将类别设置为任何类别?因此,如果传递了null类别,我将简单地忽略category参数,选择所有产品。 问题答案: 如何在JPA中将类别设置为任何类别?因此,如果传递了null类别,我将简单地忽略category参数,选择所有产品。 您必须在此处动态构建查询。使用HQL(这是一个简化的示例): 但是,实际上,我的建议是在此处使用Criteria AP

  • 主要内容:标准WHERE示例WHERE子句用于对数据库应用条件并基于该条件获取数据。 在Criteria API中,AbstractQuery接口的)方法用于设置查询条件。 标准WHERE示例 在这里,我们将在表上执行多个操作。假设该表包含以下记录 - 现在,请按照以下步骤执行操作: - 第1步: 创建一个实体类。在包下创建了类文件。 该类包含三个属性:,,以及所有必需的注解。 文件:StudentEntity.java -

  • 我是QueryDSL的新手,能够在WHERE-in子句中组装具有多个列的查询,如下所示: 我有主要查询的部分: 但我不知道如何实现where子句。如何在QueryDSL中实现这一点? 提前致谢!

  • Spring数据中是否有一种方法可以动态地形成where子句? 我想要做的是有一个方法(类似于findBy/get方法),它运行WHERE和and并使用所提到的属性,这些属性不是空的。 例如, 我们的方法如下所示 谢了。