无法提取ResultSet

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);

}

}

> 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

当我searchCodeTagsDBUtilU类执行函数时,就会发生这种情况。这是怎么回事

回答:

如下更改查询:

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

否则如下:

String hql = "from Code where Tags=:tags";

Query query = session.createQuery(hql);

query.setParameter("tags",tags);

中相应的比较 ,其中 子句是具有文字,而不是另一列。因此,必须在第一种情况下用引号引起来,或者在第二种情况下使用绑定变量。

以上是 无法提取ResultSet 的全部内容, 来源链接: utcz.com/qa/403967.html

回到顶部