【问题标题】:Hibernate how to add restriction for filtering result by Integer id columnHibernate如何通过Integer id列添加过滤结果的限制
【发布时间】:2012-02-26 00:32:36
【问题描述】:

想问如何对Integer id列过滤结果添加限制

我需要类似的东西

Restriction.like("id", myFilterValue) // id 是整数主键

【问题讨论】:

标签: hibernate restrictions


【解决方案1】:

如果你想在 Hibernate 中通过它的主键来检索一个对象,你可以使用Session.get():

Foo foo = session.get(Foo.class, id);

否则,如果您想使用 Criteria 添加相等限制:

Criteria crit = session.createCriteria(Foo.class);
crit.add(Restrictions.eq("id", id);
List foos = crit.list();

我想如果你真的想要找到数字列的十进制数字包含某个数字子串的任何行,那么你必须将该列转换为VARCHAR (其语法可能因数据库而异,并且您没有指定您使用的是哪一个),然后您就可以使用WHERE CAST(id AS VARCHAR) LIKE '%12%' 之类的东西。但是,如果您这样做,您可能需要重新考虑您要在更高级别上实现的目标,因为这会让我相信您的系统的基本设计可能存在问题。

【讨论】:

  • 我需要获取对象列表(例如,我在表中有 id 为 123、1233、23123、12... 的行)并希望找到 id 为 '12' 的对象跨度>
  • 我试过 Restrictions.sqlRestriction("id like '%" + myFilterValue + '%''),但还是不行
  • 您的意思是id 在号码中的任何位置包含数字(例如)“12”吗?在大多数数据库中,您无法使用整数列来做到这一点(LIKE 仅适用于字符串),如果您确实想要这样做,听起来您的架构可能存在更基本的设计问题
猜你喜欢
  • 1970-01-01
  • 2017-01-23
  • 1970-01-01
  • 2013-09-29
  • 1970-01-01
  • 2022-12-11
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
相关资源
最近更新 更多