2010-12-21 7 views
9

मेरे पास दो मॉडल, आइटम और शॉपसेक्शन हैं। उनके पास कई से अधिक रिश्ते हैं।org.hibernate.hql.ast.QuerySyntaxException: तालिका नाम मैप नहीं किया गया है

@Entity(name = "item") 
public class Item extends Model 
{ 
    @ManyToMany(cascade = CascadeType.PERSIST) 
    public Set<ShopSection> sections; 
} 

@Entity(name = "shop_section") 
public class ShopSection extends Model 
{ 
    public List<Item> findActiveItems(int page, int length) 
    { 
     return Item.find("select distinct i from Item i join i.sections as s where s.id = ?", id).fetch(page, length); 
    } 
} 

findActiveItems एक वर्ग में आइटम ढूंढने के लिए है, लेकिन मैं इस त्रुटि मिलती है:

org.hibernate.hql.ast.QuerySyntaxException: Item is not mapped [select distinct i from Item i join i.sections as s where s.id = ?] 
     at org.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:180) 
     at org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:111) 
     at org.hibernate.hql.ast.tree.FromClause.addFromElement(FromClause.java:93) 
     at org.hibernate.hql.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:322) 
     at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3441) 
     at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3325) 
     at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:733) 
     at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:584) 
     at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:301) 
     at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:244) 
     at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:254) 
     at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:185) 
     at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136) 
     at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101) 
     at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80) 
     at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:124) 
     at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156) 
     at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135) 
     at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1770) 
     at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:272) 
     ... 8 more 

क्या मैं गलत कर रहा हूँ?

उत्तर

12

आप इस तरह @Table एनोटेशन जोड़ने की जरूरत है:

@Entity 
@Table(name = "item") 
public class Item extends Model 
{ 
    @ManyToMany(cascade = CascadeType.PERSIST) 
    public Set<ShopSection> sections; 
} 

@Entity 
@Table(name = "shop_section") 
public class ShopSection extends Model 
{ 
    public List<Item> findActiveItems(int page, int length) 
    { 
     return Item.find("select distinct i from Item i join i.sections as s where s.id = ?", id).fetch(page, length); 
    } 
} 
4

आप "आइटम" और "आइटम" नहीं से से चयन करने की जरूरत है। इकाई का नाम केस संवेदनशील है।

+0

में ऑब्जेक्ट घोषित करने की आवश्यकता है यह मेरी समस्या थी। इसके लिए शुक्रिया। थोड़े स्पष्ट प्रतीत हो सकते हैं लेकिन आप हमेशा लिखे गए कोड/टेबल पर काम नहीं कर रहे हैं। – anon58192932

संबंधित मुद्दे