具有该名称[<name>]的hibernate参数不存在

时间:2017-07-10 10:29:49

标签: java hibernate jpa hql entitymanager

我正在运行以下代码。

UserService.java

function dlExcel(){
    var bOk = true;
    try {
        var isFileSaverSupported = !!new Blob;
    } catch (e) {
    bOk = false;
        alert("Votre navigateur ne supporte pas l'expore des fichiers excel, veuillez le metre à jour.");
    }
    var oReq = new XMLHttpRequest();
    oReq.open("GET", "AJXExcel.aspx", true);
    oReq.responseType = "arraybuffer";

    oReq.onload = function (oEvent) {
        if (oReq.status == 503){
            alert("Une erreur est survenue");
        }
        else if (oReq.status == 208){
            alert("Le fichier demandé comporte trop de ligne, veuillez affiner votre recherche à l'aide des filtres poposé");
        }else{
            var arrayBuffer = new Uint8Array(oReq.response);
            var gunzip = new Zlib.Gunzip(arrayBuffer);
            var plain = gunzip.decompress();
            var blob = new Blob([plain], {
                "type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
            });
            if(oReq.status == 206)
                alert("Le fichier généré comportait trop de lignes, il a donc été tronqué");
            saveAs(blob,"resultats.xml");
        }
        document.getElementById("ctl00_ctl00_MenuContentPlaceHolder_MainContentPlaceHolder_loading").style.display = "none";
        document.getElementById("ctl00_ctl00_MenuContentPlaceHolder_MainContentPlaceHolder_param").style.display = "block";
    }
    if (bOk){
        oReq.send(null);
    }
}

DB.java

project
 /application
 /controller
 /libraries
    /getID3
       /getid3
          getid3.php
 /model
 /views   

我收到以下错误日志。

$Word = $null
$Word = [System.Runtime.InteropServices.Marshal]::GetActiveObject('word.application')
if ($Word -eq $null)
{
    $Word = new-object -ComObject word.application
}

如果在控制台中打印参数,那么是什么导致非法参数异常出现?

请帮忙!

2 个答案:

答案 0 :(得分:2)

1)检查参数名称:id中的拼写错误。这是区分大小写的。

2)尝试不带参数执行查询。它可能是实体映射中的一个问题。

3)尝试在没有HashMap的查询中直接设置参数。

答案 1 :(得分:0)

我认为这里的问题是由Map获取params的方式引起的,Map.entrySet()方法迭代值只能在迭代中使用,并且在它之外是未定义的,这就是为什么在循环期间正确打印参数并且在查询中不存在。

如果你看一下它所说的Map.entry documentation

  

这些Map.Entry对象仅在持续时间内有效   迭代;

我建议您更改存储和使用参数的方式,只需使用List<Object>存储参数或直接在方法调用中传递id参数:

public <T> List<T> findRecords(Class<T> entityClass, String entityAlias, String select, String where, Long id){

然后直接在查询中附加此值:

query.setParameter("id", id);