2013-06-17 3 views
7
public class DBUtilU { 
    private static Session scss; 
    private static SessionFactory sfactory; 
    static { 
     Configuration cfg = new Configuration(); 
     cfg.addAnnotatedClass(Userdetails.class); 
     cfg.addAnnotatedClass(Code.class); 
     cfg.addAnnotatedClass(Messages.class); 
     cfg.addAnnotatedClass(Comments.class); 
     cfg.configure(); 
     new SchemaExport(cfg); 
     sfactory = cfg.buildSessionFactory(); 
    } 
} 

public static List<Code> searchCodeTags(String tags) { 
    List<Code> codelist = new ArrayList<Code>(); 
    try { 
     scss = sfactory.getCurrentSession(); 
     scss.beginTransaction(); 
     String query = "from Code where Tags=" + tags; 
     Query queryResult = scss.createQuery(query); 
     for(Object c : queryResult.list()) 
      codelist.add((Code)c); 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return null; 
    } 
    return codelist; 
} 

package UsersProperty; 
@Entity 
public class Code { 
    @Id 
    @GeneratedValue 
    private int codeId; 
    private int Rating; 
    private String fileName; 
    private String OwnerName; 
    private String PrjName; 
    private String Tags; 
    @ManyToOne() 
    @JoinColumn(name="userid") 
    private Userdetails userdetails; 
    @OneToMany(targetEntity=Comments.class, mappedBy="targetCode") 
    private List<Comments> cm; 

    public int getRating() { 
     return Rating; 
    } 
    public void setRating(int rating) { 
     Rating = rating; 
    } 

    public List<Comments> getCm() { 
     return cm; 
    } 
    public void setCm(List<Comments> cm) { 
     this.cm = cm; 
    } 
    public String getFileName() { 
     return fileName; 
    } 
    public void setFileName(String fileName) { 
     this.fileName = fileName; 
    } 

    public String getOwnerName() { 
     return OwnerName; 
    } 
    public void setOwnerName(String ownerName) { 
     OwnerName = ownerName; 
    } 

    public String getPrjName() { 
     return PrjName; 
    } 
    public void setPrjName(String prjName) { 
     PrjName = prjName; 
    } 

    public String getTags() { 
     return Tags; 
    } 
    public void setTags(String tags) { 
     Tags = tags; 
    } 
    public Userdetails getUserdetails() { 
     return userdetails; 
    } 
    public void setUserdetails(Userdetails userdetails) { 
     this.userdetails = userdetails; 
    } 

    public Code(String fileName, String ownerName, String prjName,String tAgs) { 
     super(); 
     this.fileName = fileName; 
     OwnerName = ownerName; 
     PrjName = prjName; 
     Tags=tAgs; 
    } 
    public Code() { 
     super(); 
    } 

    public static List<Code> CodeSearch(String TAGS){ 
     return DBUtilU.searchCodeTags(TAGS); 
    } 
} 

कंसोल:निकाल सकते नहीं ResultSet

> Hibernate: select code0_.codeId as codeId1_0_, code0_.OwnerName as OwnerNam2_0_, code0_.PrjName as PrjName3_0_, code0_.Rating as Rating4_0_, code0_.Tags as Tags5_0_, code0_.fileName as fileName6_0_, code0_.userid as userid7_0_ from Code code0_ where code0_.Tags=Overloading 
Jun 17, 2013 8:38:05 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions 
WARN: SQL Error: 0, SQLState: 42703 
Jun 17, 2013 8:38:05 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions 
ERROR: ERROR: column "overloading" does not exist 
    Position: 252 
org.hibernate.exception.SQLGrammarException: could not extract ResultSet 
    at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:123) 
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) 
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) 
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) 
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61) 
    at org.hibernate.loader.Loader.getResultSet(Loader.java:2036) 
    at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836) 
    at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815) 
    at org.hibernate.loader.Loader.doQuery(Loader.java:899) 
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) 
    at org.hibernate.loader.Loader.doList(Loader.java:2522) 
    at org.hibernate.loader.Loader.doList(Loader.java:2508) 
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338) 
    at org.hibernate.loader.Loader.list(Loader.java:2333) 
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490) 
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:355) 
    at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:195) 
    at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1269) 
    at org.hibernate.internal.QueryImpl.list(QueryImpl.java:101) 
    at DB.DBUtilU.searchCodeTags(DBUtilU.java:117) 
    at UsersProperty.Code.CodeSearch(Code.java:90) 
    at Test.Main.main(Main.java:34) 
Caused by: org.postgresql.util.PSQLException: ERROR: column "overloading" does not exist 
    Position: 252 
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2157) 
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1886) 
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255) 
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:555) 
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:417) 
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:302) 
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56) 
    ... 17 more 

समस्या:

यह तब होता है जब मैं DBUtilU वर्ग से searchCodeTags समारोह निष्पादित। यहाँ क्या हो रहा है?

उत्तर

11

नीचे के रूप में आपकी क्वेरी को बदलें। इसलिए इसे पहले मामले में उद्धृत किया जाना चाहिए, या दूसरे मामले में एक बाध्य चर का उपयोग करना चाहिए।

4

अपने त्रुटि संदेश पर एक नज़र डालें (मुझे लगता है कि स्टैकट्रैक लंबा है, आम तौर पर दिलचस्प हिस्सा शीर्ष के पास है)।

ERROR: ERROR: column "overloading" does not exist

from Code code0_ where code0_.Tags=Overloading

आप 'Overloading' उद्धृत करने के लिए है क्योंकि यह एक स्तंभ नाम है, लेकिन एक शाब्दिक मूल्य नहीं है की जरूरत है। इससे भी बेहतर, इसे एक बाध्य चर के रूप में सेट करें।

String query = "from Code where Tags='" + tags+"'"; 

अन्यथा नीचे के रूप में: में तुलना

String hql = "from Code where Tags=:tags"; 
Query query = session.createQuery(hql); 
query.setParameter("tags",tags); 

जहां खंड एक शाब्दिक और नहीं एक और स्तंभ के साथ है

0

यदि आपके पास ऊंट कैस है तो जेपीए कैमेल_Case में परिवर्तित हो जाएगा, इसे लोअरकेस में कनवर्ट करना ठीक काम करेगा।

+0

मुझे एक ही समस्या है। जब मैंने अपना वसंत बूट ऐप चलाया, तो मैंने स्टेजिंगमोवी के रूप में एक POJO स्टेजिंगमोवी और टेबल बनाया है, एप्लिकेशन स्टेजिंग_मोवी टेबल की तलाश में है जो मौजूद नहीं है। इससे कैसे बचें? – Krish

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