Hibernate如何添加按整数id列筛选结果的限制

Hibernate如何添加按整数id列筛选结果的限制,hibernate,restrictions,Hibernate,Restrictions,想询问如何添加按整数id列筛选结果的限制吗 我需要像这样的东西 限制。如(“id”,myFilterValue)//id是整数主键如果要在Hibernate中通过主键检索对象,可以使用Session.get(): 否则,如果要使用条件添加相等限制: Criteria crit = session.createCriteria(Foo.class); crit.add(Restrictions.eq("id", id); List foos = crit.list(); 我想,如果您真正想要的是

想询问如何添加按整数id列筛选结果的限制吗

我需要像这样的东西


限制。如(“id”,myFilterValue)
//id是整数主键

如果要在Hibernate中通过主键检索对象,可以使用
Session.get()

否则,如果要使用条件添加相等限制:

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

我想,如果您真正想要的是查找数值列的十进制数字包含某个数字子串的任何行,那么您必须将该列强制转换为
VARCHAR
(其语法可能因数据库而异,并且您没有指定使用哪一个)然后您就可以使用类似于
的WHERE CAST(id为VARCHAR)的东西,比如“%12%”
。但如果您正在这样做,您可能需要在更高的层次上重新考虑您试图完成的任务,因为这会让我相信您的系统的基本设计可能存在问题。

我需要获取对象列表(例如,我在表中有id为123、1233、23123、12的行…)并且要查找id为'12'的对象,我尝试了Restrictions.sqlRestriction(“id为“%”+myFilterValue+“%”“”),但仍然不工作您的意思是
id
包含数字的位置(例如“
12
”在数字的任何位置)?在大多数数据库中,整型列不能这样做(
LIKE
仅适用于字符串),而且听起来您的模式可能有一个更基本的设计问题,如果这是您真正想要做的,这是一个非常基本的问题。阅读hibernate文档
Criteria crit = session.createCriteria(Foo.class);
crit.add(Restrictions.eq("id", id);
List foos = crit.list();