使用 Hibernate 在 blob 字段上应用 "like" (Mysql)

Apply "like" on blob field with Hibernate (Mysql)

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

我该怎么办?

谢谢

你不能通过 Criteria 将字符串值与 blob 进行比较,因为这最后一个会尝试将字符串转换为 Blob,这是不可能的(基本上 java.sql.Blob 是一个接口)如果你真的需要做这样的比较,您唯一的解决方案是获取 Blob 值并基于它创建一个字符串,使用此示例:

byte[] bdata = blob.getBytes(1, (int) blob.length());
String text = new String(bdata);

你在 java 方面进行比较。