我必须使用Restrinction
数组构建我的查询,并且我必须在 Blob 字段上应用like
。
如果我这样做,它可以工作:
Restrictions.like("DBFieldName", object.getFieldName());
现在,我需要添加%
,但如果我执行类似的操作:
Restrictions.like("DBFieldName", "%" + object.getFieldName());
我收到此错误:
java.lang.ClassCastException: java.lang.String cannot be cast to java.sql.Blob
我该怎么办?
谢谢
答案 0 :(得分:0)
你不能通过Criteria将String值与Blob进行比较,因为这最后会尝试将字符串强制转换为Blob,这是不可能的(基本上java.sql.Blob是一个接口),如果你真的需要做这样的比较,只有解决方案是获取Blob值并根据它创建一个字符串,请使用以下示例:
byte[] bdata = blob.getBytes(1, (int) blob.length());
String text = new String(bdata);
并且你在java Side上进行比较。