我是新手。请帮帮我。
我的列表控制器如下所示:
@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表和POSSalesItem的其他列中列出posSalesId。为此目的我写了这个连接查询,但它显示了一些错误。
我想在posSalesId列上进行内连接,但是我得到了这些错误:
org.springframework.orm.hibernate3.HibernateQueryException:意外令牌:在第1行第111列[在POSSales.posSalesId = POSSalesItem上从com.jewellery.entity.POSSales内部联接POSSalesItem中选择POSSales.posSalesId,POSSalesItem.itemName。 posSalesId];嵌套异常是org.hibernate.hql.ast.QuerySyntaxException:意外令牌:在第1行第111列[从POSSales.posSalesId = POSSalesItem上的com.jewellery.entity.POSSales内部连接POSSalesItem中选择POSSales.posSalesId,POSSalesItem.itemName。 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(HibernateTemplate.java:411) org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
答案 0 :(得分:0)
您的HQL语法inner join POSSalesItem on POSSales.posSalesId=POSSalesItem.posSalesId
格式不正确。
正确的语法是(不需要select
)
from POSSales s inner join s.POSSalesItemList
您必须在映射(或注释)中实现的连接条件,其中您告诉POSSalesItemList的成员是哪个类以及键列(连接列)是什么。为此,请查看hibernate文档one-to-many association with annotations。