java - Hibernate DELETE查询错误导致: com. mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表 'gestcart.loanpersonrelation'不存在

标签 java mysql hibernate jdbc

我在 Hibernate 查询中遇到问题,我在 DDBB hibernate 启动过程中删除一行,出现以下错误:

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 = ?

我该如何解决这个问题?

谢谢。

最佳答案

您在这里使用 native SQL,因此应使用实际的数据库表名称 (loan_person_rel)。

关于java - Hibernate DELETE查询错误导致: com. mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表 'gestcart.loanpersonrelation'不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43834970/

相关文章:

java - 使用 URL 重定向时传递敏感数据的最佳方式是什么?

python - INSERT 函数没有抛出错误,仍然没有更新数据库表

mysql - 如何将 sql 查询的结果转换为具有特定格式的 html 表

java - PSQL异常 : ERROR: insert or update on table "*" violates foreign key constraint

java - 如何在 Selenium webdriver 中将 "unable to locate element"更改为另一条消息,如 "Element doesn' t exist"?

java - 批量插入多对多关系

hibernate - 使用 2 个实体和带有 group by 的聚合函数时,如何处理 JPA 中的类型查询?

java - JPA:如何避免简单地加载对象以便将其 ID 存储在数据库中?

深入 Java SSH2 库 : Trilead/Ganymed/Orion [/other?]

mysql - SQL选择用户的唯一列表,以及其他数据取决于时间戳