gpt4 book ai didi

java - 无法提取结果集

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:06:03 24 4
gpt4 key购买 nike

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

问题:

当我从 DBUtilU 类执行 searchCodeTags 函数时会发生这种情况。这里发生了什么?

最佳答案

如下更改您的查询:

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

否则如下:

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

where 子句中的比较是与文字而非另一列进行比较。所以它必须要么像第一种情况那样被引用,要么像第二种情况那样使用绑定(bind)变量。

关于java - 无法提取结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17152190/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com