我使用Hibernate的Java Web應用程序的工作和oracle.I當我像Hibernate使用select查詢設定了兩個實體這樣使用在where子句
@Entity
public class Student{
@Id
Long id;
String name;
}
@Entity
public class Exam{
@Id
Long id;
String status;
@ManyToOne
Student student;
}
parent屬性Hibernate查詢如何更新數據這
String hql="from Exam exam where exam.student.name=:name"
它工作正常 但是當我使用更新查詢休眠這樣
String hql="update Exam exam set status=:status where exam.student.name=:name"
它產生以下錯誤
org.hibernate.exception.SQLGrammarException: ORA-00971: missing SET keyword
at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:122)
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.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129)
at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
at $Proxy154.executeUpdate(Unknown Source)
at org.hibernate.hql.internal.ast.exec.BasicExecutor.execute(BasicExecutor.java:103)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.executeUpdate(QueryTranslatorImpl.java:413)
at org.hibernate.engine.query.spi.HQLQueryPlan.performExecuteUpdate(HQLQueryPlan.java:282)
at org.hibernate.internal.SessionImpl.executeUpdate(SessionImpl.java:1267)
at org.hibernate.internal.QueryImpl.executeUpdate(QueryImpl.java:116)
我做錯了什麼?
是狀態字段映射到任何東西? – Adarsh 2013-05-08 09:09:55
你試過'更新考試考試集exam.status =:狀態where exam.student.name =:name'? – sanbhat 2013-05-08 09:11:06
沒有。它沒有映射到任何東西。 – Dipesh 2013-05-08 09:11:28