有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是由:org引起的。冬眠例外SQLGrammarException:执行SQL的JDBC异常

我是个学生。爪哇

package com.jpaExample;
    
    import javax.persistence.EntityManager;
    import javax.persistence.EntityManagerFactory;
    import javax.persistence.Persistence;
    
    public class PersistStudent {
        
        public static void main(String[] args)
        {
            EntityManagerFactory emf= Persistence.createEntityManagerFactory("Student_details");
            
            EntityManager em=emf.createEntityManager();
            
            em.getTransaction().begin();
            
            StudentEntity s=em.find(StudentEntity.class,2);
            
            //em.remove(s);
            
            System.out.println("Before update");
            
            System.out.println(s.getId());
            System.out.println(s.getName());
            System.out.println(s.getMarks());
            
            s.setMarks(92);
            
            System.out.println("after update");
            
            System.out.println(s.getId());
            System.out.println(s.getName());
            System.out.println(s.getMarks());   
            
            em.getTransaction().commit();
        
            emf.close();
            em.close();
                                
        }
    
    }

学生们。爪哇

    package com.jpaExample;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.Table;
    
    @Entity
    
    @Table(name="studentdetails")
    public class StudentEntity {
        
        
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO) 
        
        private int id;
        private String name;
        private int marks;
        
        public StudentEntity()
        {
            super();
        }
        
        public StudentEntity(int id, String name, int marks)
        {
            this.id=id;
            this.name=name;
            this.marks=marks;
            
        }
        
        public  int getId()
        {
            return id;
        }
        public void setId(int id)
        {
            this.id=id;
        }
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getMarks() {
            return marks;
        }
    
        public void setMarks(int marks) {
            this.marks = marks;
        } 
    }

坚持。我放在META-INF中的xml

    <?xml version="1.0" encoding="UTF-8"?>
    
    <persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
      http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
      version="2.1">
      
      <persistence-unit name="Student_details" transaction-type ="RESOURCE_LOCAL">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      
      <class>com.jpaExample.StudentEntity</class>
      
      <properties>
       <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.driver.OracleDriver"></property>
       <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:1521:xe"></property>
       <property name="javax.persistence.jdbc.user" value="student"></property>
       <property name="javax.persistence.jdbc.password" value="student"></property>
      </properties>
    
      
      </persistence-unit>
      </persistence>

每当我试图运行这段代码时,我都会遇到这样的错误,我使用oracle作为JDBC驱动程序,它说的是SQL语法错误。组织。冬眠例外SQLGrammarException:执行SQL的JDBC异常[从studentdetails中选择s1_0.id、s1_0.marks、s1_0.name作为s1_0,其中s1_0.id=?] 线程“main”javax中出现异常。坚持不懈PersistenceException:org。冬眠例外SQLGrammarException:执行SQL的JDBC异常[从studentdetails中选择s1_0.id、s1_0.marks、s1_0.name作为s1_0,其中s1_0.id=?] 在org。冬眠内部的例外情况转换字符串。转换(例外ConverterImpl.java:154)

May 05, 2021 3:18:54 PM org.hibernate.jpa.boot.spi.ProviderChecker hibernateProviderNamesContain
WARN: HHH015016: Encountered a deprecated javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; [org.hibernate.jpa.HibernatePersistenceProvider] will be used instead.
May 05, 2021 3:18:54 PM org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation
INFO: HHH000204: Processing PersistenceUnitInfo [name: Student_details]
May 05, 2021 3:18:54 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {6.0.0.Alpha4}
May 05, 2021 3:18:54 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
May 05, 2021 3:18:55 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
May 05, 2021 3:18:55 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: using driver [oracle.jdbc.driver.OracleDriver] at URL [jdbc:oracle:thin:@localhost:1521:xe]
May 05, 2021 3:18:55 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {user=student, password=****}
May 05, 2021 3:18:55 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
May 05, 2021 3:18:55 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
May 05, 2021 3:18:55 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.Oracle10gDialect
May 05, 2021 3:18:57 PM org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService
INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
May 05, 2021 3:18:57 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 933, SQLState: 42000
May 05, 2021 3:18:57 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: ORA-00933: SQL command not properly ended

May 05, 2021 3:18:57 PM org.hibernate.event.internal.DefaultLoadEventListener doOnLoad
INFO: HHH000327: Error performing load command : org.hibernate.exception.SQLGrammarException: JDBC exception executing SQL [select s1_0.id, s1_0.marks, s1_0.name from studentdetails as s1_0 where s1_0.id = ?]
Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: JDBC exception executing SQL [select s1_0.id, s1_0.marks, s1_0.name from studentdetails as s1_0 where s1_0.id = ?]
    at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:154)
    at org.hibernate.internal.SessionImpl.find(SessionImpl.java:2805)
    at org.hibernate.internal.SessionImpl.find(SessionImpl.java:2737)
    at com.jpaExample.PersistStudent.main(PersistStudent.java:17)
Caused by: org.hibernate.exception.SQLGrammarException: JDBC exception executing SQL [select s1_0.id, s1_0.marks, s1_0.name from studentdetails as s1_0 where s1_0.id = ?]
    at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:63)
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:99)
    at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:111)
    at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.getResultSet(DeferredResultSetAccess.java:54)
    at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.processNext(JdbcValuesResultSetImpl.java:113)
    at org.hibernate.sql.results.jdbc.internal.AbstractJdbcValues.next(AbstractJdbcValues.java:33)
    at org.hibernate.sql.results.internal.RowProcessingStateStandardImpl.next(RowProcessingStateStandardImpl.java:67)
    at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:56)
    at org.hibernate.sql.results.spi.ListResultsConsumer.consume(ListResultsConsumer.java:23)
    at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:191)
    at org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.list(JdbcSelectExecutorStandardImpl.java:71)
    at org.hibernate.loader.ast.internal.SingleIdLoadPlan.load(SingleIdLoadPlan.java:123)
    at org.hibernate.loader.ast.internal.SingleIdEntityLoaderStandardImpl.load(SingleIdEntityLoaderStandardImpl.java:62)
    at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:4432)
    at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:567)
    at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:535)
    at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:208)
    at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:330)
    at org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:108)
    at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:74)
    at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:118)
    at org.hibernate.internal.SessionImpl.fireLoadNoChecks(SessionImpl.java:1142)
    at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1131)
    at org.hibernate.internal.SessionImpl.access$2000(SessionImpl.java:167)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.doLoad(SessionImpl.java:2239)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.lambda$load$1(SessionImpl.java:2220)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.perform(SessionImpl.java:2176)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2220)
    at org.hibernate.internal.SessionImpl.find(SessionImpl.java:2770)
    ... 2 more
Caused by: java.sql.SQLSyntaxErrorException: ORA-00933: SQL command not properly ended

    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:447)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
    at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:951)
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:513)
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:227)
    at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:208)
    at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:886)
    at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1175)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1296)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3613)
    at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3657)
    at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1495)
    at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:102)
    ... 28 more

共 (1) 个答案

  1. # 1 楼答案

    Oracle在from子句中的表名和别名之间没有分隔符,因此我猜您可能使用了错误的/不受支持的本机查询,或者配置的Hibernate方言是错误的