JPA Criteria“locate”忽略“from”参数

时间:2015-07-17 13:46:45

标签: java oracle hibernate jpa criteria

我有一个表SASDOSSIERS,其中一列apentrytext有一个值6.8.3 Dossiers "A" , SAS, Fürsorgeleistungen an Auslandschweizer,我需要在最后一个,之后选择Fürsorgeleistungen an AuslandschweizerSELECT distinct TRIM(SUBSTR(apentrytext,INSTR(apentrytext,',',-1)+1)) from SASDOSSIERS; 。如果我在sql中执行以下查询,则选择是正确的:

cq.multiselect(
            cb.trim(
                    cb.substring(
                            sasdossier.get(Sasdossier_.apentrytext),
                            cb.sum(
                                    cb.locate(sasdossier.get(Sasdossier_.apentrytext), cb.literal(","), cb.literal(Integer.valueOf(-1))),
                                    1
                            )
                    )
            )
    ).distinct(true);

然而,如果我尝试使用jpa critera

中的等价物
SELECT DISTINCT trim(BOTH FROM substr(sasdossier0_.apentrytext, instr(sasdossier0_.apentrytext, ?) + 1)) AS col_0_0_
FROM ACCESS_DB.sasdossiers sasdossier0_
WHERE sasdossier0_.apentrytext IS NOT NULL

它完全忽略了我在from参数中放入的内容(我尝试过很多不同的值,例如:-2,-100,1,2,100),它似乎忽略了我放在那里,结果总是相同。而且,hibernate生成的查询表明参数确实被忽略了:

it('should filtering by interval correctly', function () {
    filter_field.click();
    var filter_field_text = filter_field.element(by.css('input'));

    var exist_value1 = element(by.xpath('//tr[@data-row-index="1"]/td[@data-column-index="5"]/div')).getText().then(function (value) {
        var floatValue = parseFloat(value);
        return (floatValue);
    });
    var exist_value2 = element(by.xpath('//tr[@data-row-index="1"]/td[@data-column-index="5"]/div')).getText().then(function (value) {
        var floatValue = parseFloat(value);
        return Math.round(floatValue) + 1;
    });
    filter_field_text.sendKeys(exist_value1);
    filter_field_text.sendKeys('-');
    filter_field_text.sendKeys(exist_value2);
    browser.sleep(3000);
    var filtered_values = element.all(by.xpath('//tr/td[@data-column-index="5"]/div'));
    filtered_values.each(function (element, index) {
        var current_value = element.getText().then(function (value) {
            var floatValue = parseFloat(value);
            return (floatValue);
        });
        expect(exist_value1 <= current_value).toBe(true);
    });
    if (true) console.log("Test done!");
});

这似乎是一个合法的错误,但我之前找不到任何有同样错误的人,所以,我做错了什么?我应该报告错误吗?

谢谢。

0 个答案:

没有答案