2014-09-30 3 views
5

मैं वसंत 3 हाइबरनेट 4 और ओआरएम पर नया काम कर रहा हूं। तो अपवाद से नीचे हो कृपया मदद करें।org.hibernate.hql.internal.ast.QuerySyntaxException: EdbmsEmployee मैप नहीं किया गया है [EdbmsEmployee edbmsEmployee से जहां edbmsEmployee.employeeid =?]

मैं जानता हूँ कि यह अपवाद के लिए प्रश्न पहले से ही पूछा जाता है लेकिन मेरे मामले में मैं अभी भी उन समाधान की कोशिश कर के बाद इस मुद्दे का सामना करना पड़ रहा है।

नीचे मेरी इकाई वर्ग

package com.aviva.qc.hrms.entity; 

import java.io.Serializable; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.Id; 
import javax.persistence.Table; 

@Entity 
@Table(name="EDBMS_EMPLOYEE") 
public class EdbmsEmployee implements Serializable{ 

@Id 
@Column(name="EMPLOYEEID", nullable=false) 
private String employeeid; 

@Column(name="FIRSTNAME", nullable=false) 
private String firstname; 

@Column(name="LASTNAME", nullable=false) 
private String lastname; 

@Column(name="BANDID", nullable=false) 
private String bandid; 

@Column(name="DOJ", nullable=false) 
private String doj; 

@Column(name="DOB", nullable=false) 
private String dob; 

@Column(name="FUNCTIONNAME", nullable=false) 
private String functionname; 

public String getEmployeeid() { 
    return employeeid; 
} 

public void setEmployeeid(String employeeid) { 
    this.employeeid = employeeid; 
} 

public String getFirstname() { 
    return firstname; 
} 

public void setFirstname(String firstname) { 
    this.firstname = firstname; 
} 

public String getLastname() { 
    return lastname; 
} 

public void setLastname(String lastname) { 
    this.lastname = lastname; 
} 

public String getBandid() { 
    return bandid; 
} 

public void setBandid(String bandid) { 
    this.bandid = bandid; 
} 

public String getDoj() { 
    return doj; 
} 

public void setDoj(String doj) { 
    this.doj = doj; 
} 

public String getDob() { 
    return dob; 
} 

public void setDob(String dob) { 
    this.dob = dob; 
} 

public String getFunctionname() { 
    return functionname; 
} 

public void setFunctionname(String functionname) { 
    this.functionname = functionname; 
} 
} 

यहाँ

package com.aviva.qc.hrms.daoimpl; 

    import org.hibernate.Session; 
    import org.hibernate.SessionFactory; 
    import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Repository; 
import org.springframework.transaction.annotation.Transactional; 

import com.aviva.qc.hrms.dao.EdbmsEmployeeDao; 
import com.aviva.qc.hrms.entity.EdbmsEmployee; 

@Repository("edbmsEmployeeDao") 
public class EdbmsEmployeeDaoImpl implements EdbmsEmployeeDao{ 

private static Logger logger = LoggerFactory.getLogger(EdbmsEmployeeDaoImpl.class); 

@Autowired 
private SessionFactory sessionFactory; 

@Transactional(readOnly=true) 
public EdbmsEmployee getEdbmsEmployeeDetails(String employeeid){ 
    Session session = sessionFactory.getCurrentSession();  
    System.out.println("session session "+session); 

    EdbmsEmployee edbmsEmployee = (EdbmsEmployee)session.createQuery("from EdbmsEmployee edbmsEmployee where edbmsEmployee.employeeid=?") 
      .setParameter("employeeid",employeeid) 
      .uniqueResult(); 

    if(logger.isDebugEnabled()){ 

     if(edbmsEmployee==null){ 
      System.out.println("Employee not Found "+edbmsEmployee); 
      logger.trace("Employee not Found "+edbmsEmployee); 
     }else{ 
      System.out.println("Employee Found "+edbmsEmployee); 
      logger.trace("Employee Found "+edbmsEmployee); 
     } 
    } 

    return edbmsEmployee; 
    } 
} 

है और है मेरी daoimplementaion वर्ग और जब मैं पहुँच दाव मैं अपवाद नीचे हो रही है कोशिश कर रहा हूँ -

org.hibernate.hql.internal.ast.QuerySyntaxException: EdbmsEmployee is not mapped [from EdbmsEmployee edbmsEmployee where edbmsEmployee.employeeid=?] 
at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:180) 
at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:110) 
at org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:93) 
at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:326) 
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3252) 
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3141) 
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:694) 
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:550) 
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:287) 
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:235) 
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:248) 
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:183) 
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136) 
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:101) 
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:80) 
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:119) 
at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:215) 
at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:193) 
at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1649) 
at com.aviva.qc.hrms.daoimpl.EdbmsEmployeeDaoImpl.getEdbmsEmployeeDetails(EdbmsEmployeeDaoImpl.java:29) 
at com.aviva.qc.hrms.daoimpl.EdbmsEmployeeDaoImpl$$FastClassByCGLIB$$52572915.invoke(<generated>) 
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:163) 
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodI 

मैं इसे 3 दिनों से हल करने की कोशिश कर रहा हूं लेकिन कोई भाग्य नहीं,

मैं सही इकाई वर्ग javax.persistence.Entity का आयात कर रहा हूँ; और HQL में एंटीटी क्लास नाम का उपयोग करना "EdbmsEmployee edbmsEmployee से जहां edbmsEmployee.employeeid =?" (कोड ठीक से पहले इस लाइन केवल इस लाइन पर अपवाद दे रही है चल रहा है)

session session SessionImpl(PersistenceContext[entityKeys=[],collectionKeys=   []];ActionQueue[insertions=[] updates=[] deletions=[] collectionCreations=[] collectionRemovals=[] collectionUpdates=[] unresolvedInsertDependencies=UnresolvedEntityInsertActions[]]) 
Sep 30, 2014 11:17:49 AM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet spring threw exception 

और मेरी इकाई वर्ग में मैं सही ढंग से सभी एनोटेशन का इस्तेमाल किया है। तो मुझे यह अपवाद क्यों मिल रहा है "EdbmsEmployee मैप नहीं किया गया है"।

मैं समाधान googled और पाया कि इस अपवाद अगर हम गलत इकाई वर्ग आयात आ रहा है या हम HQL में तालिका नाम का उपयोग किया है है। मेरे दोनों में सही है। और मुझे विश्वास है कि इन एनोटेशन के साथ काम करते समय मुझे मेरी इकाई वर्ग को XML फ़ाइल में मैप करने की आवश्यकता नहीं है।

+1

तथ्य यह है कि आप का उपयोग '@ Entity' एनोटेशन स्वतः ही यह, एक इकाई है अगर आप इस संस्था के बारे में हाइबरनेट (और स्टैकट्रेस से पहचानने आपके पास नहीं है) नहीं बताया यह पता नहीं हो जाएगा मतलब यह नहीं है और मैप किया गया। एक और नोट पर आप कुछ ऐसा क्यों कर रहे हैं जो 'सत्र' ऑब्जेक्ट पर सीधे उपलब्ध है? 'session.get (EdbmsEmployee.class, कर्मचारी आईडी); 'वही और अधिक अनुकूलित तरीके से करेगा। –

+0

धन्यवाद Deinum यह कोशिश करने के बाद भी मैं अपवाद से नीचे जा रहा हूं .. org.hibernate.MappingException: अज्ञात इकाई: com.aviva.qc.hrms.entity.EdbmsEmployee –

+1

ठीक है। मेरी पूरी टिप्पणी पढ़ें और यो क्यों ... * "यदि आप इस संस्था के बारे में हाइबरनेट बता नहीं है (और स्टैकट्रेस से पहचानने आप नहीं किया है) यह पता नहीं किया जाएगा और मैप किए गए" * –

उत्तर

8

कृपया LocalSessionFactoryBean के लिए स्पष्ट रूप से "packagesToScan" संपत्ति जोड़ना सुनिश्चित करें।

<property name="packagesToScan" value="com.hibernate.yourpackage" /> 
ऊपर घोषणा हाइबरनेट साथ

डेटाबेस वर्ग के साथ अपने इकाई वर्ग मैप करने के लिए सक्षम हो जाएगा

+0

धन्यवाद, योगिट अब ठीक काम कर रहा है। –

0

यही बात मुझे क्या हुआ था मैं @EntityScan जोड़ने के लिए किया था ("com.what कभी पैकेज आपके संस्थाओं में हैं") आवेदन कक्षा के शीर्ष पर।

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