例外:JDBC类型没有Dialect映射:-9

时间:2015-12-29 05:56:18

标签: java hibernate spring-mvc

这是我的Dao功能

public List<MerchantTransaction> merchantList(String strMerchantId, String strStatus){
        List<MerchantTransaction> merTra = null;
        Session session = null;

        try {
             session  = sessionFactory.getCurrentSession();
             merTra = (List<MerchantTransaction>) session.createSQLQuery("SELECT * FROM MERCHANT_TRANSACTION WHERE TRANSACTIONMERCHANTID='"+strMerchantId+"' AND TRANSACTIONSTATUS='"+strStatus+"'").list();

            } catch (Exception e) {
                    System.out.println("Exception in Merchant traans dao list :"+e.getMessage());
            }

    return merTra;
    }
}

错误代码 - JDBC类型的无方言映射:-9

这里我尝试使用createSQLQuery语句从数据库中获取列表。我很困惑使用createSQLQuery获取MerchantTransaction列表。任何人都可以帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

这意味着NVARCHAR列没有映射。

但您可以为您的查询添加演员

/data/B

请参阅here

或者有建议添加here

所描述的映射

答案 1 :(得分:0)

除了@StanislavL之外,您的代码中存在错误。您无法使用本机SQL获取List<MerchantTransaction>。 您的查询应该是

   List<Object[]> merTra = (List<Object[]>) session.createSQLQuery(
            "SELECT * FROM MERCHANT_TRANSACTION WHERE TRANSACTIONMERCHANTID='" + strMerchantId
                    + "' AND TRANSACTIONSTATUS='" + strStatus + "'").list();

通过字符串连接创建SQL查询字符串是一种不好的做法。您应该使用Parameters

但最好的方法是使用HQL。您的查询非常简单,因此在HQL中它可以是这样的(假设,MerchantTransaction与Merchant有关联)

from MerchantTransaction t where t.merchant.id = :merchantId 
    and t.transactionStatus = :status

您也可以使用条件查询。