Java 如何在字符串列上使用HIbernate条件将其视为长列进行比较
我正在从事一个用java编写的web项目,该项目使用Hibernate从oracle数据库访问数据 我的数据库中有一个列名Java 如何在字符串列上使用HIbernate条件将其视为长列进行比较,java,hibernate,criteria,hibernate-criteria,Java,Hibernate,Criteria,Hibernate Criteria,我正在从事一个用java编写的web项目,该项目使用Hibernate从oracle数据库访问数据 我的数据库中有一个列名serial,它被定义为VARCHAR(12),即使它只包含可以转换为long的值。我的目的是获取编号fromNo和toNo之间的所有序列(将它们视为数字)。我无法使用限制。介于之间,因为序列列不是DB中的数字。它在关联对象中也定义为String。现在,我通过将数字范围转换为字符串列表并在列中执行限制来达到要求(以一种丑陋的方式) long fromNO = 10; long
serial
,它被定义为VARCHAR(12)
,即使它只包含可以转换为long
的值。我的目的是获取编号fromNo
和toNo
之间的所有序列(将它们视为数字)。我无法使用限制。介于
之间,因为序列
列不是DB中的数字。它在关联对象中也定义为String
。现在,我通过将数字范围转换为字符串列表并在列中执行限制来达到要求(以一种丑陋的方式)
long fromNO = 10;
long toNo = 100;
List<String> listNos = null;
for (long k = fromNo; k <=toNO; k++) {
listNos.add(k.toString());
}
Criteria criteria = getMyHibernateSession().createCriteria(MyObject.class);
criteria.add(Restrictions.in('serialNo',listNos));
List<MyObject> results = criteria.list();
long fromNO=10;
长托诺=100;
列表listNos=null;
对于(长k=fromNo;k请尝试使用Restrictions.between。尝试将整数解析为字符串
criteria.add(Restrictions.between('serialNo',String.valueOf(listNosFrom),String.valueOf(listNosTo)));
您可以在实体中添加新的“长”字段,并将其注释为
@Formula("cast(serialNo as NUMBER(10,0))")
private int lSerialNo;
然后在限制中使用新字段lSerialNo
这是如何处理空值的?