HIbernate:并非所有已命名的参数都已设置

时间:2016-04-07 06:07:13

标签: java classcastexception

我在jpa中设置了一个本机查询,但它没有按预期运行并且给了我异常       这是我的问题:

<script>
$( "li.class1" ).addClass( "selected" );
</script>

3 个答案:

答案 0 :(得分:0)

在第2行和第3行的关键词AND和FROM之前以及第2行的关键字AS之后,似乎缺少一些空格。

答案 1 :(得分:0)

您的查询存在多个问题,主要是因为它不是有效的SQL。显示命名参数错误,因为日期值不在引号内,因此它正在解析它并因半冒号:而感到困惑。 解决此问题的最简单方法是对要连接的值使用引号'并将它们转换为DATE(我假设是您想要的),用逗号替换AND ,并在字符串连接之间添加空格。

答案 2 :(得分:0)

你的l_query错了。您错过了查询不同部分的空格。 QueryException显示错误的sql。

您提到您在项目中使用jpa为什么不使用它?

对我而言,在这种情况下,您似乎不需要简单的native query。请改用jpql query

您的查询也是sql注入的一个大问题,因为您直接在查询中提供了属性值。请改用参数。

例如,您的代码可以基于此示例代码构建:

public List findWithName(String name) {
    return em.createQuery(
        "SELECT c FROM Customer c WHERE c.name LIKE :custName")
        .setParameter("custName", name)
        .getResultList();
}

Here are some examples

修改

StringBuilder l_query = new StringBuilder("SELECT t.creationdate AS '" + m_dateFrom.getValue()); 
l_query.append("', t.creationdate AS '"  + m_dateTo.getValue()); 
l_query.append("' from tablename t").toString();