hibernate 使用hib读取URL地址的冒号

ifsvaxew  于 2023-01-21  发布在  其他
关注(0)|答案(1)|浏览(136)

我知道有很多关于这个问题的东西,但我找不到一个具体的帮助我解决我的问题。或者,至少,我还没有弄清楚它:/。
我的问题如下:我有一个产品数据库,每个产品都有一个图像字段,该字段对应于该图像的URL。
然后,当我想查询以'http://'或'https://'开头的url图像时,由于休眠行为,我遇到了典型的冒号问题。
最重要的是,如果没有前缀,ubuntu和mac就没有前缀......但是windows有。
这就是我的问题......如果有办法解决冒号的问题,或者可以避免windows的前缀,这样它就可以加载图像,我将是地球上最幸福的人。对不起,但我真的不知道该怎么做来解决这个问题,或者是否有一个替代方案,甚至允许我不处理这个特定的问题。
提前感谢你们的时间,伙计们!:)
我在做一个本地查询:
[UPDATE products SET products.title = 'On Cloudsurfer Running Women\'s Shoes Size 5.5', products.brand = 'On Running', products.urlImage = ' [http://ecx.images-amazon.com/images/I/31NpvJwpEYL.*SL75*.jpg](http://ecx.images-amazon.com/images/I/31NpvJwpEYL._SL75_.jpg) ', products.weight = 1.85, products.width = 7.8, products.height = 4.2, products.length = 10.9, products.amazonSize = '5.5 B(M) Women\'s US' WHERE products.sku='0000027001WM-SZ-5.5';]
我的问题是冒号...在ubuntu和mac上,前缀不是问题,但似乎windows一直需要它,因为图像没有在windows上显示。

错误:对不起!请忘记只有windows不显示图片的事实。系统太大了,我忘了我用“"修补了“:“。这就是ubuntu和mac显示图片而windows不显示图片的原因...

不管怎么说,冒号的问题还是个问题

fdx2calv

fdx2calv1#

有时持久对象可能包含带有%、_、!等字符的字段,如果使用Hibernate的条件查询进行过滤,就会出现这样的问题。
使用以下代码片段作为参考:

public class EscapedRestrictions {
    public static Criterion ilike(String propertyName, String value) {
        return new EscapedILikeExpression(propertyName, value);
    }

    public static Criterion ilike(String propertyName, String value, MatchMode matchMode) {
        return new EscapedILikeExpression(propertyName, value, matchMode);
    }
}

class EscapedILikeExpression extends IlikeExpression {
    private static final String HIBERNATE_ESCAPE_CHAR = "\\";

    public EscapedILikeExpression(String propertyName, Object value) {
        super(propertyName, value);
    }

    public EscapedILikeExpression(String propertyName, String value, MatchMode matchMode) {
        super(propertyName, replaceAll(value), matchMode);
    }

    private static String replaceAll(String value) {
        return value
                .replace("\\",  HIBERNATE_ESCAPE_CHAR + "\\")
                .replace("_",   HIBERNATE_ESCAPE_CHAR + "_")
                .replace("%",   HIBERNATE_ESCAPE_CHAR + "%");

    }
}

用法与上面的代码段相同,唯一的区别是用EscapedRestrictions替换了Restrictions类。

相关问题