我试图使用JPA规范编写以下查询。从hcp中选择Distincent name,其中区域='Dhaka';
select distinct name from hcp where area = 'Dhaka';
hcp实体如下所示
@Entity
public class HCP implements Serializable {
@Id
@Column
private String id;
@Column
private String name;
@Column
private String area;
}
桌子应该是这样的
java prettyprint-override">List<HCP> result = hcpRepository.findAll(new Specification<HCP>() {
@Override
public Predicate toPredicate(Root<HCP> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
query.select(root.get("name")).distinct(true);
return criteriaBuilder.equal(root.get("area"), "Dhaka");
}
});
select
distinct hcp0_.id as id1_0_,
hcp0_.area as area2_0_,
hcp0_.name as name3_0_
from
hcp hcp0_
where
hcp0_.area=?
select
distinct hcp0_.name as name3_0_
from
hcp hcp0_
where
hcp0_.area= 'Dhaka'
所需的结果将根据区域列出不同的名称。如何使用JPA规范在特定字段上应用distinct?
所需的查询和输出:
不能使用规范,因为要返回字符串列表。
所以您可以使用JPQL
@Query("select distinct h.name from Hcp h where area = 'Dhaka'")
List<String> findDistinctName();
我们可以通过在存储库接口中编写自定义@Query方法来选择特定列。但是,我不想为不同的属性编写这么多方法。 我试过这个,但它一直返回整个对象。 用作: 这是正确的方法吗?错在哪里?
我有下面的查询,其中两个表连接在非主列上。该表连接到一个公用列上。 用户详细信息 如何在JPA规范中实现相同的查询
我正在尝试将查询转换为JPA规范,该查询包含带OR条件的连接操作。 以下是查询: 我试图编写一个规范,但在如何将多个列与OR条件连接方面遇到了障碍。 用户实体: 运营实体 我希望有一个规范来取代上面的查询
A society made up of individuals who were all capable of original thought would probably be unendurable. — H. L. Mencken “随大溜” 有时会是个好主意。如果其他人需要阅读或管理你的配置清单, 或者如果你想要分享代码到社区, 那么尽可能遵循现有的样式约定会是个好主意。 操作步骤 将
为什么它更高效,因为像'your_name'这样的c.name扫描只在第一个查询中发生一次。
我有jpa存储库: 和客户规范 通常我是这样取记录的 现在我想按组计算 其中(复杂规范中的标准)按字段1、字段2、字段3分组; 如上所述,如何使用jpaRepository和Custom规范执行此GROUP BY和COUNT 注意:我可以像这样做完整计数 帮助我分组和计数。提前谢谢。