Java 如何对整型字段执行限制

Java 如何对整型字段执行限制,java,database,hibernate,postgresql,Java,Database,Hibernate,Postgresql,我在DB(Postgresql)和hibernate映射文件中有一个整数字段,我想在类似操作中使用它(例如Restrictions.like(Bean.fieldname,'123')) 对于没有显式类型转换的整数,数据库不支持like,select*from table where text(myint)like'1%。理想情况下,我希望将DB字段类型和Hibernate属性类型保持为integers,而不必加载DB中的所有字段以在Java代码中迭代 干杯:)如果该值真的是一个数字,我会将其限

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

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


干杯:)

如果该值真的是一个数字,我会将其限制在一个范围内,例如大于或等于100,小于200。我没想到你真的想要“所有数字都以1开头”——这意味着1和10000是相似的,而1和2是完全不同的。数字中的信息几乎总是与其大小有关,而不是其十进制表示形式中的数字。

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

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


您可以将数据库中的值强制转换为text/varchar,但如果不同时创建一个特殊索引,则会降低性能。

为什么需要类似的索引?这是一个非常奇怪的比较,这也是为什么它不是整数运算符的原因


您可以将数据库中的值强制转换为text/varchar,但如果不同时创建特殊索引,则会降低性能。

Restrictions.sqlRestriction(“将({alias}.myint转换为CHAR)like?”,“%1%”,Hibernate.STRING))

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

这是对产品代码的搜索,这些代码被存储为整数,需要搜索。我明白了。在我所知道的所有情况下,产品代码都不是实数,而是代码。在这种情况下,您可以将代码存储为text/varchar,并免费获得您喜欢的代码。我认为你不必计算
AVG(productcode)
productcode+10
。我同意,它本质上不是一个数字,但是遗留数据库可能出于效率原因将其存储为这样,所以这就是我正在处理的情况。它是对产品代码的搜索,这些代码被存储为整数,需要进行搜索。我明白了。在我所知道的所有情况下,产品代码都不是实数,而是代码。在这种情况下,您可以将代码存储为text/varchar,并免费获得您喜欢的代码。我认为您不必计算
AVG(productcode)
productcode+10
。我同意,它本质上不是一个数字,但遗留数据库可能出于效率原因将其存储为这样,所以这就是我要处理的情况。