这是我的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列表。任何人都可以帮我解决这个问题。
答案 0 :(得分:0)
答案 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
您也可以使用条件查询。