我用SSH三大框架写的项目;实体类是用JPA注解标注的,还用到了复合主键;在查询的时候出现了如下错误,各位,小菜鸟在此求教了!2011-07-22 17:21:46,905 [http-8888-5] WARN [org.hibernate.util.JDBCExceptionReporter] - SQL Error: -104, SQLState: 42601
2011-07-22 17:21:46,905 [http-8888-5] ERROR [org.hibernate.util.JDBCExceptionReporter] - DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=coverage0_.status;overage0_.converage_;<space>, DRIVER=3.50.152
2011-07-22 17:21:46,905 [http-8888-5] WARN [org.hibernate.util.JDBCExceptionReporter] - SQL Error: -727, SQLState: 56098
2011-07-22 17:21:46,905 [http-8888-5] ERROR [org.hibernate.util.JDBCExceptionReporter] - DB2 SQL Error: SQLCODE=-727, SQLSTATE=56098, SQLERRMC=2;-104;42601;coverage0_.status|overage0_.converage_|<space>, DRIVER=3.50.152
2011-07-22 17:21:46,905 [http-8888-5] WARN [org.hibernate.util.JDBCExceptionReporter] - SQL Error: -727, SQLState: 56098
2011-07-22 17:21:46,906 [http-8888-5] ERROR [org.hibernate.util.JDBCExceptionReporter] - DB2 SQL Error: SQLCODE=-727, SQLSTATE=56098, SQLERRMC=2;-104;42601;coverage0_.status|overage0_.converage_|<space>, DRIVER=3.50.152
error2
org.hibernate.exception.SQLGrammarException: could not execute query
(省略)
Caused by: com.ibm.db2.jcc.b.nm: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=coverage0_.status;overage0_.converage_;<space>, DRIVER=3.50.152
(省略)
2011-07-22 17:21:46,905 [http-8888-5] ERROR [org.hibernate.util.JDBCExceptionReporter] - DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=coverage0_.status;overage0_.converage_;<space>, DRIVER=3.50.152
2011-07-22 17:21:46,905 [http-8888-5] WARN [org.hibernate.util.JDBCExceptionReporter] - SQL Error: -727, SQLState: 56098
2011-07-22 17:21:46,905 [http-8888-5] ERROR [org.hibernate.util.JDBCExceptionReporter] - DB2 SQL Error: SQLCODE=-727, SQLSTATE=56098, SQLERRMC=2;-104;42601;coverage0_.status|overage0_.converage_|<space>, DRIVER=3.50.152
2011-07-22 17:21:46,905 [http-8888-5] WARN [org.hibernate.util.JDBCExceptionReporter] - SQL Error: -727, SQLState: 56098
2011-07-22 17:21:46,906 [http-8888-5] ERROR [org.hibernate.util.JDBCExceptionReporter] - DB2 SQL Error: SQLCODE=-727, SQLSTATE=56098, SQLERRMC=2;-104;42601;coverage0_.status|overage0_.converage_|<space>, DRIVER=3.50.152
error2
org.hibernate.exception.SQLGrammarException: could not execute query
(省略)
Caused by: com.ibm.db2.jcc.b.nm: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=coverage0_.status;overage0_.converage_;<space>, DRIVER=3.50.152
(省略)
在查询分析器下能正常执行。
我“保存一条数据”,直接用框架的save()方法,也会报这样的错:
2011-07-22 17:46:17,013 [http-8888-3] WARN [org.hibernate.util.JDBCExceptionReporter] - SQL Error: -104, SQLState: 42601
2011-07-22 17:46:17,014 [http-8888-3] ERROR [org.hibernate.util.JDBCExceptionReporter] - DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=coverage_.status;coverage_.converage_;<space>, DRIVER=3.50.152
2011-07-22 17:46:17,014 [http-8888-3] WARN [org.hibernate.util.JDBCExceptionReporter] - SQL Error: -727, SQLState: 56098
2011-07-22 17:46:17,014 [http-8888-3] ERROR [org.hibernate.util.JDBCExceptionReporter] - DB2 SQL Error: SQLCODE=-727, SQLSTATE=56098, SQLERRMC=2;-104;42601;coverage_.status|coverage_.converage_|<space>, DRIVER=3.50.152
2011-07-22 17:46:17,014 [http-8888-3] WARN [org.hibernate.util.JDBCExceptionReporter] - SQL Error: -727, SQLState: 56098
2011-07-22 17:46:17,014 [http-8888-3] ERROR [org.hibernate.util.JDBCExceptionReporter] - DB2 SQL Error: SQLCODE=-727, SQLSTATE=56098, SQLERRMC=2;-104;42601;coverage_.status|coverage_.converage_|<space>, DRIVER=3.50.152
org.hibernate.exception.SQLGrammarException: could not retrieve snapshot:
我“保存一条数据”,直接用框架的save()方法,也会报这样的错:你save是用的对象保存的 怎么也会报错
org.hibernate.exception.SQLGrammarException: could not retrieve snapshot: 还是你sql语法有问题
或者是hql转为sql时的问题 你先贴hql 和sql吧
即你的JPA写的有问题
@Table(name = "T_COVERAGE")
public class Coverage implements java.io.Serializable { private CoverageId id;
private String converageName; @EmbeddedId
@AttributeOverrides({
@AttributeOverride(name = "coverageId", column = @Column(name = "COVERAGE_ID", nullable = false, length = 40)),
@AttributeOverride(name = "risksId", column = @Column(name = "RISKS_ID", nullable = false, length = 40)) })
public CoverageId getId() {
return this.id;
} @Column(name = "CONVERAGE_NAME", length = 40)
public String getConverageName() {
return converageName;
}
}
这是Coverage联合主键类@Embeddable
public class CoverageId implements java.io.Serializable { private String coverageId;
private String risksId; @Column(name = "COVERAGE_ID", nullable = false, length = 40)
public String getCoverageId() {
return this.coverageId;
} @Column(name = "RISKS_ID", nullable = false, length = 40)
public String getRisksId() {
return this.risksId;
} public boolean equals(Object other) {
if ((this == other))
return true;
if ((other == null))
return false;
if (!(other instanceof CoverageId))
return false;
CoverageId castOther = (CoverageId) other; return ((this.getCoverageId() == castOther.getCoverageId()) || (this
.getCoverageId() != null && castOther.getCoverageId() != null && this
.getCoverageId().equals(castOther.getCoverageId())))
&& ((this.getRisksId() == castOther.getRisksId()) || (this
.getRisksId() != null && castOther.getRisksId() != null && this
.getRisksId().equals(castOther.getRisksId())));
} public int hashCode() {
int result = 17; result = 37* result
+ (getCoverageId() == null ? 0 : this.getCoverageId()
.hashCode());
result = 37 * result
+ (getRisksId() == null ? 0 : this.getRisksId().hashCode());
return result;
}}