用Hibernate(Mysql)在blob字段上应用“like”

时间:2016-06-03 08:45:22

标签: jquery mysql database hibernate sql-like

我必须使用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

我该怎么办?

谢谢

1 个答案:

答案 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上进行比较。