1

我对此很陌生。请帮我。

我的列表控制器如下所示: @RequestMapping(value="/possalesList.htm",method=RequestMethod.GET) public String PosSalesList(@ModelAttribute("possales")PSales sales,@RequestParam(value = "salesItemID", required = false)Integer salesItemID,ModelMap model) { List<POSSalesItem> posSalesItemList = posSalesDao.listSalesItem(); model.addAttribute("possalesList", posSalesItemList);
return "possalesList"; }

我的 hibernateDaoimpl 看起来像这样: @SuppressWarnings("unchecked") @Transactional(readOnly=true) public List<POSSalesItem> listSalesItem() { return (List<POSSalesItem>)getHibernateTemplate().find("select POSSales.posSalesId , POSSalesItem.itemName from POSSales inner join POSSalesItem on POSSales.posSalesId=POSSalesItem.posSalesId"); }

我的内部连接如下所示: select POSSales.posSalesId , POSSalesItem.itemName from POSSales inner join POSSalesItem on POSSales.posSalesId=POSSalesItem.posSalesId

外键在mysql中创建成功。

我正在做的是列出 POSSales 表中的 posSalesId 和 POSSalesItem 中的其他列。为此,我编写了这个连接查询,但它显示了一些错误。

我想在 posSalesId 列上进行内部连接,但出现以下错误:

org.springframework.orm.hibernate3.HibernateQueryException:意外令牌:在第 1 行附近,第 111 列 [select POSSales.posSalesId ,POSSalesItem.itemName from com.jewellery.entity.POSSales 内部连接 ​​POSSalesItem on POSSales.posSalesId=POSSalesItem.posSalesId];嵌套异常是 org.hibernate.hql.ast.QuerySyntaxException:意外令牌:在第 1 行附近,第 111 列 [select POSSales.posSalesId ,POSSalesItem.itemName from com.jewellery.entity.POSSales 内部连接 ​​POSSalesItem on POSSales.posSalesId=POSSalesItem。 posSalesId] org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:660) org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412) org.springframework.orm.hibernate3.HibernateTemplate.doExecute(休眠模板。

4

1 回答 1

0

您的 HQL 语法inner join POSSalesItem on POSSales.posSalesId=POSSalesItem.posSalesId格式错误。

正确的语法是(没有select必要)

from POSSales s inner join s.POSSalesItemList

您必须在映射(或注释)中实现的连接条件,您可以在其中告诉 POSSalesItemList 的成员是哪个类以及键列(连接列)是什么。为此,请查看 hibernate 文档,与 annotations 的一对多关联

于 2012-06-05T15:18:18.183 回答