如何在hibernate内部查询中添加set parameter()metheod?
我尝试这样做但已经有错误
这是我的代码
Query query=session.createQuery("select eq.euipmentName,eq.type from Euipment eq where eq.id in(select euipment from Quotation qt where qt. supQuotation=:ids)");
query.setParameter("ids",id);
list = (List<Euipment>)query.list();
答案 0 :(得分:3)
我对您的查询做了一些更正: qt。 supQuotation有一个空间,我已经删除了 2.你子查询中的设备没有别名,我加qt
String hql =
"select eq.euipmentName,eq.type " +
" from Euipment eq " +
" where eq.id in (select qt.euipment from Quotation qt where qt.supQuotation = :ids)";
Query query = session.createQuery(hql);
query.setParameter("ids",id);
list = (List<Euipment>)query.list();
告诉我,如果没问题
如果不行,请在此处发布错误,并检查您是否已将hibernate mappping文件放入您的课程
答案 1 :(得分:2)
通过SQLQuery控制本机SQL查询的执行 interface,通过调用Session.createSQLQuery()。
获得
createQuery()
使用HQL语法创建Query对象。createSQLQuery()
使用本机SQL语法创建Query对象。 因此,将createQuery
替换为createSQLQuery
以进行本机SQL查询。
答案 2 :(得分:0)
尝试使用标准
Criteria c = getSession().createCriteria(Euipment.class, "e");
c.createAlias("e.quotation", "q"); // inner join by default
c.add(Restrictions.eq("q.supQuotation", id));
list = (List<Euipment>)c.list();