繁体   English   中英

例外:JDBC类型的否方言映射:-9

[英]Exception: No Dialect mapping for JDBC type: -9

这是我的道功能

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的列表感到困惑。 谁能帮我解决这个问题。

这意味着NVARCHAR列没有映射。

但您可以在您的查询中添加演员表

SELECT cast(the_nvarchar_column_name as varchar) ...

这里

或者有建议添加此处描述的映射

除了@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

您也可以使用条件查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM