2017-05-07 62 views
0

我有一個問題惠普Hibernate查詢,我刪除一個進程刪除一行DDBB休眠啓動後續錯誤:休眠DELETE查詢錯誤導致:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表'gestcart.loanpersonrelation'不存在

Caused by: org.hibernate.exception.SQLGrammarException: could not extract ResultSet 
at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:80) 
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) 
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:126) 
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:112) 
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:91) 
at org.hibernate.loader.Loader.getResultSet(Loader.java:2066) 
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1863) 
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1839) 
at org.hibernate.loader.Loader.doQuery(Loader.java:910) 
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:355) 
at org.hibernate.loader.Loader.doList(Loader.java:2554) 
at org.hibernate.loader.Loader.doList(Loader.java:2540) 
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2370) 
at org.hibernate.loader.Loader.list(Loader.java:2365) 
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:353) 
at org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:1909) 
at org.hibernate.internal.AbstractSessionImpl.list(AbstractSessionImpl.java:311) 
at org.hibernate.internal.SQLQueryImpl.list(SQLQueryImpl.java:141) 
at org.hibernate.internal.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:966) 
at com.gestcart.account.repository.PersonRepositoryImpl.getPersonType(PersonRepositoryImpl.java:50) 
at com.gestcart.account.service.ManagementServiceImpl.list(ManagementServiceImpl.java:62) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) 
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99) 
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281) 
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208) 
at com.sun.proxy.$Proxy71.list(Unknown Source) 
at com.gestcart.account.controller.LoanManagementController.listEnterprisesResult(LoanManagementController.java:109) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222) 
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) 
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814) 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737) 
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969) 
... 64 more 
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'gestcart.loanpersonrelation' doesn't exist 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:425) 
    at com.mysql.jdbc.Util.getInstance(Util.java:408) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:943) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973) 
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909) 
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527) 
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680) 
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2490) 
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1858) 
    at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1966) 
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:82) 
    ... 107 more 

的實體是:

@Entity 
@Table(name = "loan_person_rel") 
public class LoanPersonRelation extends GCEntity { 

private String personId; 
private String loanId; 
private int type; 

public String getPersonId() { 
    return personId; 
} 

public void setPersonId(String personId) { 
    this.personId = personId; 
} 

public String getLoanId() { 
    return loanId; 
} 

public void setLoanId(String loanId) { 
    this.loanId = loanId; 
} 

public int getType() { 
    return type; 
} 

public void setType(int type) { 
    this.type = type; 
} 
} 

的存儲庫中的方法是:

@Override 
public int getPersonType(String personId, String loanId) { 
    Query personTypeQuery = getSessionFactory().createSQLQuery(
      "SELECT lpr.type FROM LoanPersonRelation lpr WHERE lpr.personId = :person_id AND lpr.loanId = :loan_id"); 
    personTypeQuery.setParameter("person_id", personId); 
    personTypeQuery.setParameter("loan_id", loanId); 
    return (int) personTypeQuery.uniqueResult(); 
} 

而生成的查詢是:

Hibernate: 
SELECT 
    lpr.type 
FROM 
    LoanPersonRelation lpr 
WHERE 
    lpr.personId = ? 
    AND lpr.loanId = ? 

我怎麼能解決這個問題?

謝謝。

+1

方法'createSQLQuery'用於編寫原生sql查詢和'createQuery()'方法用於jpql。使用'createQuery()' –

+0

@JaySmith這解決了我的問題,謝謝。 –

回答

0

您在此處使用本機SQL,因此應使用實際的數據庫表名稱(loan_person_rel)。

相關問題