2012-06-05 70 views
1

我是新來的這個。請幫幫我。Hiberante 3.0內部連接兩個不同的實體與forigen鍵

我上市控制器看起來是這樣的: @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的。

我在做什麼是我POSSalesId POSSales表和POSSalesItem其他列的posSalesId。爲此目的我寫了這個連接查詢,但它顯示一些錯誤。

我想要在列posSalesId內加盟,但是我得到這些錯誤:

org.springframework.orm.hibernate3.HibernateQueryException:意外的標記:在靠近1號線,列111 [選擇POSSales。 posSalesId,來自com.jewellery.entity.POSS的POSSalesItem.itemNamePOSales POSSales.posSalesId = POSSalesItem.posSalesId]上的內部連接POSSalesItem;嵌套的異常是org.hibernate.hql.ast.QuerySyntaxException:意外的標記:在第1列的第111列[選擇POSSales.posSalesId,來自com.jewellery.entity.POSS的POSSalesItem.itemName POSSales.posSalesId = POSSalesItem的內部連接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(HibernateTemplate.java:411) org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)

+0

如果您需要此幫助,您應該將實際的休眠代碼添加到您的帖子中,似乎您只發布了您生成的SQL –

+0

您的問題無法閱讀。花些時間正確格式化。 –

+0

@RasmusFranke可以幫助我...我已經發布了控制器和休眠部分。 – viquar

回答

0

你的HQL語法inner join POSSalesItem on POSSales.posSalesId=POSSalesItem.posSalesId是malfor MED。

正確的語法是(無select必要)

from POSSales s inner join s.POSSalesItemList 

連接條件你必須在映射來實現(或批註),您知道哪些類POSSalesItemList的成員是什麼鍵列(加入欄)是。爲此,請查看hibernate文檔,one-to-many association with annotations

+0

兄弟,我有兩個實體名稱POSSales和POSSalesItem.in POSSales posSalesId是主鍵,posSalesId是外鍵POSSalesItem.now我想選擇POSSales實體一個或兩個值,並在窗體視圖中列出它們。如果你想看看我的外鍵關係,請給我看看。 – viquar