gpt4 book ai didi

java - Hibernate 条件、整数和 "like"

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:21:43 24 4
gpt4 key购买 nike

我正在将一些 hql 语句迁移到 Criterias,现在我发现了一个问题:实体属性是 Integer 类型,但我需要类似通配符搜索,所以在 hql 中我这样做

session.createQuery("from P1 where id like :id").setString("id", "%"+s+"%")

没问题,Hibernate 将 String 转换为 Integer。

如果我在 Criteria 中尝试这个,我只会得到一个 ClassCastException

String cannot be cast to Integer

Criteria crit = sessionFactory.getCurrentSession().createCriteria(P1.class);
crit.add(Restrictions.like("id",s)).addOrder(Order.asc("id")).setMaxResults(maxResults);

为什么 Hibernate 以不同的方式处理这两种情况?

最佳答案

您可以使用 str expression conversion .如果这有任何意义的话。

str() for converting numeric or temporal values to a readable string

session.createQuery("from P1 where str(id) like :id").setString("id", "%"+s+"%")

如果你没有 function based index,这会很慢在专栏上。

关于java - Hibernate 条件、整数和 "like",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1859440/

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