Java 异常:没有JDBC类型的方言映射:-9

Java 异常:没有JDBC类型的方言映射:-9,java,hibernate,spring-mvc,Java,Hibernate,Spring Mvc,这是我的刀功能 public List<MerchantTransaction> merchantList(String strMerchantId, String strStatus){ List<MerchantTransaction> merTra = null; Session session = null; try { session = sessionFactory.getCurre

这是我的刀功能

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;
    }
}
公共列表商品列表(字符串strmerchanti,字符串strStatus){
列表merTra=null;
会话=空;
试一试{
session=sessionFactory.getCurrentSession();
merTra=(List)session.createSQLQuery(“从商户交易中选择*,其中TRANSACTIONMERCHANTID=”“+strMerchantId+”,TRANSACTIONSTATUS=”“+strStatus+”)”)。List();
}捕获(例外e){
System.out.println(“商户traans dao列表中的异常:+e.getMessage());
}
返回梅特拉;
}
}
错误代码没有JDBC类型的方言映射:-9


在这里,我尝试使用createSQLQuery语句从数据库中获取一个列表。我对使用createSQLQuery获取商品交易列表感到困惑。谁能帮我解决这个问题

这意味着NVARCHAR列没有映射

但您可以将cast添加到查询中

SELECT cast(the_nvarchar_column_name as varchar) ...


或者有人建议添加所描述的映射

这意味着NVARCHAR列没有映射

但您可以将cast添加到查询中

SELECT cast(the_nvarchar_column_name as varchar) ...


或者,有人建议将@StanislavL answer中描述的映射添加到@StanislavL answer之外,因为代码中有错误。您无法使用本机SQL获取
列表
。 您的查询应该是

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

您也可以使用条件查询。

除了@StanislavL answer之外,您的代码中还有一个错误。您无法使用本机SQL获取
列表
。 您的查询应该是

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

您也可以使用条件查询。

而不是System.out.println(“商户traans dao列表中的异常:+e.getMessage());做这个系统。输出。打印ln(e);这将提供更有用的输出/stacktrace.com,而不是System.out.println(“商户traans dao列表中的异常:“+e.getMessage()”);做这个系统。输出。打印ln(e);这将提供更有用的输出/堆栈跟踪。