gpt4 book ai didi

java - 将 BigDecimal 转换为 String,以便在 JPQL 查询中使用 LIKE 过滤某些 BigDecimal id

转载 作者:行者123 更新时间:2023-11-30 06:51:41 25 4
gpt4 key购买 nike

我想在 JPQL 中使用 LIKE 关键字过滤 BigDecimal id。我使用 EclipseLink。

假设我们有 id:197718、182123、182912、123456,我想从表中提取实体.id 为 %18% 的所有行。如果操作成功,结果将是:182123, 182912

我的查询是。

public List<MyEntity> getFilteredMyEntity(String idStr) {
return entityManager.createQuery("select m from MyEntity m where m.id like :idStr")
.query.setParameter("idStr", "%" + idStr+ "%")
.getResultList();
}

假设我以这种方式调用此方法,以便获取 id 中包含“18”的所有实体:

List<MyEntity> entities = getFilteredMyEntity("18");

但是我遇到了异常,因为我无法将 BigDecimal 与 String 进行比较。所以,我必须将这个 BigDecimal 转换为 String

jpql(不是 native 查询)有办法将 BigDecimal 转换为 String 吗?类似 to_char() 的东西。

最佳答案

您可以像下面一样在 JPQL 中执行此操作(我在我这边进行了测试,它对我有用)

Note: i am using JPA 2.1 with Hibernate provider

public List<MyEntity> getFilteredMyEntity(String idStr) {
return entityManager.createQuery("SELECT m FROM MyEntity m WHERE CAST( m.id AS string ) LIKE :idStr")
.setParameter("idStr", "%" + idStr+ "%").getResultList();
}

还有这是使用 native 查询的另一种方式

public List<MyEntity> getFilteredMyEntity(String idStr) {
return entityManager.createNativeQuery("SELECT m FROM MyEntity m WHERE CAST(m.id AS varchar(10)) LIKE :idStr")
.setParameter("idStr", "%" + idStr+ "%").getResultList();
}

关于java - 将 BigDecimal 转换为 String,以便在 JPQL 查询中使用 LIKE 过滤某些 BigDecimal id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42653734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com