如何在整数字段上执行Restrictions.like

时间:2011-02-24 13:59:59

标签: java database hibernate postgresql

我在DB(Postgresql)中有一个整数字段,我想在类似的操作中使用我的hibernate映射文件(例如Restrictions.like(Bean.fieldname,'123'))。

如果没有显式类型转换like,数据库不支持select * from table where text(myint) like '1%'。理想情况下,我希望将DB字段类型和Hibernate属性类型保持为integer,而不必从DB加载所有字段以在Java代码中迭代。

欢呼:)

3 个答案:

答案 0 :(得分:4)

如果值确实是数字,我只是将其限制在一个范围内 - 例如大于或等于100且小于200.我不会认为你真的想要“所有以1开头的数字” - 这表明1和10000是相似的,而1和2是完全不同的。数字中的信息几乎总是与其大小有关,而不是与十进制表示的数字有关。

答案 1 :(得分:0)

你为什么需要喜欢?这是一个非常奇怪的比较,这也是它不是整数运算符的原因。

您可以将数据库中的值强制转换为text / varchar,但除非您创建特殊索引,否则您将终止性能。

答案 2 :(得分:0)

Restrictions.sqlRestriction(“CAST({alias} .myint AS CHAR)”喜欢?“,”%1%“,Hibernate.STRING));