gpt4 book ai didi

hibernate - 如何将 to_number 应用于 Hibernate 条件中的列?

转载 作者:行者123 更新时间:2023-12-03 08:08:22 25 4
gpt4 key购买 nike

我正在使用 hibernate 分离条件从表(Oracle 数据库)中获取结果。我需要通过提升某些列来获取结果顺序。该列包含数字,但数据类型为 varchar。如果我们不对列应用 to_number(),那么 Oracle 会进行 ASCII 比较以进行排序。因此,我需要应用 to_number() 对结果进行排序,因为列包含所有数字,但数据类型是 varchar。请在下面找到我正在使用的查询

public List<EntityClass> getResults(final String someinput) throws Exception {
DetachedCriteria criteria = DetachedCriteria.forClass(EntityClass.class);
criteria.add(Restrictions.eq("input", someinput));
criteria.addOrder(Order.asc("someId")); // **here id column is of varchar type**.

List<EntityClass> results= this.getHibernateTemplate().findByCriteria(criteria);
return results;
}

criteria.addOrder(Order.asc("someId")); - 这里我需要应用 to_number。我们可以使用 SQL 查询轻松实现,但我应该只使用条件查询。
请帮助我如何实现这一目标?

最佳答案

我知道这对于使用 Projections.cast 的 NHibernate 是可能的,但是据我所知,您想要的东西对于 Hibernate 是不可能的。我看到仅使用 Criteria 的唯一解决方案是使用 @Formula(尽管我自己从未这样做过):

@Column
private String someId;

@Formula(value="to_number(someId)")
private Long someIdNumber;

...

criteria.addOrder(Order.asc("someIdNumber"));

就我个人而言,我会考虑使用 Java(使用比较器)对结果进行排序,因为无论您选择何种解决方案,您的查询都将取决于特定的 DBMS。

关于hibernate - 如何将 to_number 应用于 Hibernate 条件中的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8240469/

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