我在DB(Postgresql)中有一个整数字段,我想在类似的操作中使用我的hibernate映射文件(例如Restrictions.like(Bean.fieldname,'123')
)。
如果没有显式类型转换like
,数据库不支持select * from table where text(myint) like '1%'
。理想情况下,我希望将DB字段类型和Hibernate属性类型保持为integer
,而不必从DB加载所有字段以在Java代码中迭代。
答案 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));