Org.hibernate.Exception.SQLGrammarException

Мой пример кода здесь

 @Entity
@Table(name = "catalog")
public class Catalog implements Serializable {

@Id
@Column(name="ID_CATALOG")
@GeneratedValue 
private Integer idCatalog;

@Column(name="Catalog_Name")
private String catalogName;

@OneToMany(mappedBy="catalog", fetch = FetchType.LAZY)
private Set<Product> products = new HashSet<Product>(0);

//getter & setter & constructor
//...
}


@Entity
@Table(name = "product")
public class Product implements Serializable {

@Id
@Column(name="id_product")
@GeneratedValue 
private Integer idProduct;

@ManyToOne
@JoinColumn(name="ID_CATALOG")
private Catalog catalog;

@Column(name="product_name")
private String productName;

@Column(name="date")
private Date date;

@Column(name="author")
private String author;

@Column(name="price")
private Integer price;

@Column(name="linkimage")
private String linkimage;

//getter & setter & constructor
}



@Repository
@SuppressWarnings({"unchecked", "rawtypes"})
public class ProductDAOImpl implements ProductDAO {
    @Autowired
    private SessionFactory sessionFactory;
public List<Product> searchProductByCatalog(String catalogid, String keyword) {
    String sql = "select p from Product p where 1 = 1";
    Session session = sessionFactory.getCurrentSession();

    if (keyword.trim().equals("") == false) {
        sql += " and p.productName like '%" + keyword + "%'";
    }
    if (catalogid.trim().equals("-1") == false
            && catalogid.trim().equals("") == false) {
        sql += " and p.catalog.idCatalog = " + Integer.parseInt(catalogid);
    }
    Query query = session.createQuery(sql);
    List listProduct = query.list();
    return listProduct;
}

}

  
   <!-- Scan classpath for annotations (eg: @Service, @Repository etc) -->
  <context:component-scan base-package="com.shopmvc"/>

  <!-- JDBC Data Source. It is assumed you have MySQL running on localhost port 3306 with 
       username root and blank password. Change below if it's not the case -->
  <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/shoesshopdb?autoReconnect=true"/>
    <property name="username" value="root"/>
    <property name="password" value="12345"/>
    <property name="validationQuery" value="SELECT 1"/>
  </bean>

  <!-- Hibernate Session Factory -->
  <bean id="mySessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="dataSource" ref="myDataSource"/>
    <property name="packagesToScan">
      <array>
        <value>com.shopmvc.pojo</value>
      </array>
    </property>
    <property name="hibernateProperties">
      <value>
        hibernate.dialect=org.hibernate.dialect.MySQLDialect
      </value>
    </property>
  </bean>

  <!-- Hibernate Transaction Manager -->
  <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="mySessionFactory"/>
  </bean>

  <!-- Activates annotation based transaction management -->
  <tx:annotation-driven transaction-manager="transactionManager"/>

  
 org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

root cause 

org.hibernate.exception.SQLGrammarException: could not extract ResultSet
    org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82)
    org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
    org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
    org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
    org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61)
    org.hibernate.loader.Loader.getResultSet(Loader.java:2036)

root cause 

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.ID_CATALOG' in 'field list'
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    java.lang.reflect.Constructor.newInstance(Unknown Source)
    com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    com.mysql.jdbc.Util.getInstance(Util.java:386)
    com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054)
    com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187)
    com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119)
    com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570)
    com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)
    com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815)
    com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
    com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322)
    org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
    org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
    org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56)
    org.hibernate.loader.Loader.getResultSet(Loader.java:2036)
    org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836)
    org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815)
    org.hibernate.loader.Loader.doQuery(Loader.java:899)
    org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341)
    org.hibernate.loader.Loader.doList(Loader.java:2522)
    org.hibernate.loader.Loader.doList(Loader.java:2508)
    org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338)
    org.hibernate.loader.Loader.list(Loader.java:2333)
    org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490)

  
 CREATE TABLE `catalog` (
  `ID_CATALOG` intorg.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

root cause 

org.hibernate.exception.SQLGrammarException: could not extract ResultSet
    org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82)
    org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
    org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
    org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
    org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61)
    org.hibernate.loader.Loader.getResultSet(Loader.java:2036)

root cause 

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.ID_CATALOG' in 'field list'
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    java.lang.reflect.Constructor.newInstance(Unknown Source)
    com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    com.mysql.jdbc.Util.getInstance(Util.java:386)
    com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054)
    com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187)
    com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119)
    com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570)
    com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)
    com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815)
    com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
    com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322)
    org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
    org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
    org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56)
    org.hibernate.loader.Loader.getResultSet(Loader.java:2036)
    org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836)
    org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815)
    org.hibernate.loader.Loader.doQuery(Loader.java:899)
    org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341)
    org.hibernate.loader.Loader.doList(Loader.java:2522)
    org.hibernate.loader.Loader.doList(Loader.java:2508)
    org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338)
    org.hibernate.loader.Loader.list(Loader.java:2333)
    org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490)
 NOT NULL AUTO_INCREMENT,
  `Catalog_Name` varchar
Содержание
  1. DEFAULT NULL, PRIMARY KEY (`ID_CATALOG`) ) CREATE TABLE `product` ( `id_product` intorg.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) root cause org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82) org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) root cause com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.ID_CATALOG' in 'field list' sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) java.lang.reflect.Constructor.newInstance(Unknown Source) com.mysql.jdbc.Util.handleNewInstance(Util.java:411) com.mysql.jdbc.Util.getInstance(Util.java:386) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815) com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815) org.hibernate.loader.Loader.doQuery(Loader.java:899) org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) org.hibernate.loader.Loader.doList(Loader.java:2522) org.hibernate.loader.Loader.doList(Loader.java:2508) org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338) org.hibernate.loader.Loader.list(Loader.java:2333) org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490) NOT NULL AUTO_INCREMENT, `product_name` varcharDEFAULT NULL, `date` date DEFAULT NULL, `author` varcharDEFAULT NULL, `price` intorg.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) root cause org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82) org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) root cause com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.ID_CATALOG' in 'field list' sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) java.lang.reflect.Constructor.newInstance(Unknown Source) com.mysql.jdbc.Util.handleNewInstance(Util.java:411) com.mysql.jdbc.Util.getInstance(Util.java:386) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815) com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815) org.hibernate.loader.Loader.doQuery(Loader.java:899) org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) org.hibernate.loader.Loader.doList(Loader.java:2522) org.hibernate.loader.Loader.doList(Loader.java:2508) org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338) org.hibernate.loader.Loader.list(Loader.java:2333) org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490) DEFAULT NULL, `catalog_id` intorg.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) root cause org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82) org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) root cause com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.ID_CATALOG' in 'field list' sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) java.lang.reflect.Constructor.newInstance(Unknown Source) com.mysql.jdbc.Util.handleNewInstance(Util.java:411) com.mysql.jdbc.Util.getInstance(Util.java:386) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815) com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815) org.hibernate.loader.Loader.doQuery(Loader.java:899) org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) org.hibernate.loader.Loader.doList(Loader.java:2522) org.hibernate.loader.Loader.doList(Loader.java:2508) org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338) org.hibernate.loader.Loader.list(Loader.java:2333) org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490) DEFAULT NULL, `linkimage` varcharDEFAULT NULL, PRIMARY KEY (`id_product`), KEY `FK_Product_idx` (`catalog_id`), CONSTRAINT `FK_Product` FOREIGN KEY (`catalog_id`) REFERENCES `catalog` (`ID_CATALOG`) ON DELETE NO ACTION ON UPDATE NO ACTION )
Решение – 1 Попробуйте использовать внутреннее соединение в своем запросе Query query=session.createQuery("from Product as p INNER JOIN p.catalog as c WHERE c.idCatalog= :id and p.productName like :XXX"); query.setParameter("id", 7); query.setParameter("xxx", "%"+abc+"%"); List list = query.list(); также в файле конфигурации спящего режима есть <!--hibernate.cfg.xml --> <property name="show_sql">true</property> Для отображения на консоли того, что запрашивается. Решение – 2 На Product выше, имя объединяемого столбца установлено на ID_CATALOG . @ManyToOne @JoinColumn(name="ID_CATALOG") private Catalog catalog; Однако внешний ключ на Product стол называется catalog_id `catalog_id` intorg.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) root cause org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82) org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) root cause com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.ID_CATALOG' in 'field list' sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) java.lang.reflect.Constructor.newInstance(Unknown Source) com.mysql.jdbc.Util.handleNewInstance(Util.java:411) com.mysql.jdbc.Util.getInstance(Util.java:386) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815) com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815) org.hibernate.loader.Loader.doQuery(Loader.java:899) org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) org.hibernate.loader.Loader.doList(Loader.java:2522) org.hibernate.loader.Loader.doList(Loader.java:2508) org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338) org.hibernate.loader.Loader.list(Loader.java:2333) org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490) DEFAULT NULL, Решение – 3 У меня была похожая проблема. Попробуйте использовать редактор HQL. Он отобразит вам SQL (поскольку у вас есть исключение из грамматики SQL). Скопируйте свой SQL и выполните его отдельно. В моем случае проблема была в определении схемы. Я определил схему, но мне следует оставить ее пустой. Это вызвало то же исключение, что и вы. А описание ошибки отражало фактическое состояние, поскольку имя схемы было включено в оператор SQL. Решение – 4 Другая потенциальная причина, по которой другие люди сталкиваются с тем же сообщением об ошибке, заключается в том, что эта ошибка возникнет, если вы обращаетесь к таблице в схеме, отличной от той, с которой вы прошли аутентификацию. В этом случае вам нужно будет добавить имя схемы в запись вашего объекта: @Table(name= "catalog", schema = "targetSchemaName") Решение – 5 Если у вас нет последовательности «HIBERNATE_SEQUENCE», созданной в базе данных (если вы используете oracle или любую базу данных на основе последовательностей), вы получите тот же тип ошибки; Убедитесь, что последовательность присутствует; Решение – 6 Я столкнулся с той же проблемой после переноса базы данных с онлайн-сервера на локальный хост. Схема изменилась, поэтому мне пришлось определять ее вручную для каждой таблицы: @Entity @Table(name = "ESBCORE_DOMAIN", schema = "SYS") Решение – 7 @OneToMany(mappedBy="catalog", fetch = FetchType.LAZY) @JsonIgnore private Set<Product> products = new HashSet<Product>(0); Решение – 8 spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl ранее получала ошибку There was an unexpected error (type=Internal Server Error, status=500). could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:280) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:254) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:528) at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:153) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) Решение – 9 У меня была такая же проблема, когда я пытался обновить строку: @Query(value = "UPDATE data SET value = 'asdf'", nativeQuery = true) void setValue(); @Modifying @Query(value = "UPDATE data SET value = 'asdf'", nativeQuery = true) void setValue(); Раствор – 10 Я использовал Spring Data JPA с PostgreSql, и во время вызова UPDATE показывались ошибки — ‘ не удалось извлечь ResultSet ‘ и еще один. org.springframework.dao. InvalidDataAccessApiUsageException: выполнение запрос на обновление/удаление; вложенное исключение javax.persistence. TransactionRequiredException: выполнение обновить/удалить запрос. ( Требуется отображение транзакций. ) Вообще-то меня не было две обязательные аннотации. @Transactional и @Модификация @Query(vlaue = " UPDATE DB.TABLE SET Col1 = ?1 WHERE id = ?2 ", nativeQuery = true) void updateCol1(String value, long id); Решение – 11 Для MySql учтите, что не стоит писать верблюжий регистр . Например, если схема такая: CREATE TABLE IF NOT EXISTS `task`( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `teaching_hours` DECIMAL(5,2) DEFAULT NULL, `isActive` BOOLEAN DEFAULT FALSE, `is_validated` BOOLEAN DEFAULT FALSE, ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Вы должны быть очень осторожны, потому что isActive столбец будет преобразован в isactive . Итак, в вашем классе Entity должно быть так: @Basic @Column(name = "isactive", nullable = true) public boolean isActive() { return isActive; } public void setActive(boolean active) { isActive = active; } По крайней мере, это была моя проблема, из-за которой я получил вашу ошибку Решение – 12 Это сообщение также появляется, если вы по ошибке используете зарезервированное ключевое слово для своей таблицы ( https://dev.mysql.com/doc/refman/8.0/en/keywords.html#keywords-8- 0-подробно-C ). При объединении таблицы, имя которой совпадает с зарезервированным ключевым словом mysql, вы получите то же сообщение, хотя все остальное правильно. Надеюсь, это сэкономит время и боль другим людям. Решение – 13 Я воспроизвел похожую проблему: Caused by: org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:279) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:253) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:527) at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ... Caused by: java.sql.SQLSyntaxErrorException: Unknown column 'setting0_.advance_payment_first_text' in 'field list' at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:975) И в моем конкретном случае это произошло из-за конфликта между новым дампом, который использовался для базы данных, и liquibase файлы конфигурации data.xml с логикой типа: <changeSet author="liquibase-docs" id="sqlFile-data"> <sqlFile dbms="!h2, oracle, mysql" encoding="UTF-8" path="......sqldata.sql" relativeToChangelogFile="true" splitStatements="true" stripComments="true"/> </changeSet> <changeSet author="liquibase-docs" id="sqlFile-structure"> <sqlFile dbms="!h2, oracle, mysql" encoding="UTF-8" path="......sqlstructure.sql" relativeToChangelogFile="true" splitStatements="true" stripComments="true"/> </changeSet> для старых скриптов проекта. После некоторых исследований, проверив соответствие таблиц столбцам в коде, я понял, что эти старые скрипты перезаписываются после запуска нового дампа проекта. Итак после удаления старых скриптов data.sql и structure.sql с файлами конфигурации data.xml и structure.xml из проекта эта проблема была решена. Решение – 14 в моем случае я изменил свойство ddl на create-drop и запустил его после удаления таблиц. просто ставим ddl на создание, и после этого возвращаемся в none (чтобы больше не менять базу) Решение – 15 Для меня проблема заключалась в первую очередь в различиях в верхнем и нижнем регистре между моим локальным рабочим пространством и именем таблицы сервера базы данных разработки. select name from customer; select name from Customer; Исправив опечатку, ошибка исчезла. Надеюсь, для кого-то это станет решением. Выпуск Мой пример кода здесь @Entity @Table(name = "catalog") public class Catalog implements Serializable { @Id @Column(name="ID_CATALOG") @GeneratedValue private Integer idCatalog; @Column(name="Catalog_Name") private String catalogName; @OneToMany(mappedBy="catalog", fetch = FetchType.LAZY) private Set<Product> products = new HashSet<Product>(0); //getter & setter & constructor //... } @Entity @Table(name = "product") public class Product implements Serializable { @Id @Column(name="id_product") @GeneratedValue private Integer idProduct; @ManyToOne @JoinColumn(name="ID_CATALOG") private Catalog catalog; @Column(name="product_name") private String productName; @Column(name="date") private Date date; @Column(name="author") private String author; @Column(name="price") private Integer price; @Column(name="linkimage") private String linkimage; //getter & setter & constructor } @Repository @SuppressWarnings({"unchecked", "rawtypes"}) public class ProductDAOImpl implements ProductDAO { @Autowired private SessionFactory sessionFactory; public List<Product> searchProductByCatalog(String catalogid, String keyword) { String sql = "select p from Product p where 1 = 1"; Session session = sessionFactory.getCurrentSession(); if (keyword.trim().equals("") == false) { sql += " and p.productName like '%" + keyword + "%'"; } if (catalogid.trim().equals("-1") == false && catalogid.trim().equals("") == false) { sql += " and p.catalog.idCatalog = " + Integer.parseInt(catalogid); } Query query = session.createQuery(sql); List listProduct = query.list(); return listProduct; } } <!-- Scan classpath for annotations (eg: @Service, @Repository etc) --> <context:component-scan base-package="com.shopmvc"/> <!-- JDBC Data Source. It is assumed you have MySQL running on localhost port 3306 with username root and blank password. Change below if it's not the case --> <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/shoesshopdb?autoReconnect=true"/> <property name="username" value="root"/> <property name="password" value="12345"/> <property name="validationQuery" value="SELECT 1"/> </bean> <!-- Hibernate Session Factory --> <bean id="mySessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="myDataSource"/> <property name="packagesToScan"> <array> <value>com.shopmvc.pojo</value> </array> </property> <property name="hibernateProperties"> <value> hibernate.dialect=org.hibernate.dialect.MySQLDialect </value> </property> </bean> <!-- Hibernate Transaction Manager --> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="mySessionFactory"/> </bean> <!-- Activates annotation based transaction management --> <tx:annotation-driven transaction-manager="transactionManager"/> org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) root cause org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82) org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) root cause com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.ID_CATALOG' in 'field list' sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) java.lang.reflect.Constructor.newInstance(Unknown Source) com.mysql.jdbc.Util.handleNewInstance(Util.java:411) com.mysql.jdbc.Util.getInstance(Util.java:386) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815) com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815) org.hibernate.loader.Loader.doQuery(Loader.java:899) org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) org.hibernate.loader.Loader.doList(Loader.java:2522) org.hibernate.loader.Loader.doList(Loader.java:2508) org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338) org.hibernate.loader.Loader.list(Loader.java:2333) org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490) CREATE TABLE `catalog` ( `ID_CATALOG` int
 NOT NULL AUTO_INCREMENT,
  `Catalog_Name` varchar

DEFAULT NULL, PRIMARY KEY (`ID_CATALOG`) ) CREATE TABLE `product` ( `id_product` int
 NOT NULL AUTO_INCREMENT,
  `product_name` varchar

DEFAULT NULL, `date` date DEFAULT NULL, `author` varchar DEFAULT NULL, `price` int
 DEFAULT NULL,
  `catalog_id` int
 DEFAULT NULL,
  `linkimage` varchar

DEFAULT NULL, PRIMARY KEY (`id_product`), KEY `FK_Product_idx` (`catalog_id`), CONSTRAINT `FK_Product` FOREIGN KEY (`catalog_id`) REFERENCES `catalog` (`ID_CATALOG`) ON DELETE NO ACTION ON UPDATE NO ACTION ) Решение На Product выше, имя объединяемого столбца установлено на ID_CATALOG . @ManyToOne @JoinColumn(name="ID_CATALOG") private Catalog catalog; Однако внешний ключ на Product стол называется catalog_id `catalog_id` int
 DEFAULT NULL,


Ответил - Уилл Килинг
Выпуск


У меня есть Spring Boot, связанный с приложением Oracle Database. Та же версия приложения отлично работает с MySQL, но когда я пытаюсь выполнить несколько запросов к базе данных Oracle, выдается ошибка:



Итак, вот мой метод контроллера для этой функции:
@PostMapping("/expense")
    ResponseEntity<Expense> createExpense(@Valid @RequestBody Expense expense) throws URISyntaxException {

        Expense result = expenseRepository.save(expense);
        return ResponseEntity.created(new URI("/api/expense/" + result.getId())).body(result);
    }


И мои расходы

 модель
@NoArgsConstructor
@Data
@Table(name="expense")
@Entity
public class Expense {

    @Id
    @GeneratedValue(strategy= GenerationType.AUTO)
    private Long id;

    private Instant date; 

    private double amount;
    
    private String description;

    @ManyToOne
    private Category category;

    @ManyToOne
    private User user;

// Getters and setters


Вот моё приложение.свойства
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle12cDialect
spring.jpa.properties.hibernate.ddl-auto=create-drop
spring.jpa.properties.hibernate.show-sql=true

spring.datasource.url=jdbc:oracle:thin:@localhost:1521:XE
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.username=system
spring.datasource.password=root
spring.datasource.initialization-mode=always
spring.datasource.validationQuery=SELECT 1

logging.level.org.hibernate.SQL=DEBUG
spring.server.compression.enabled=true

spring.jpa.database-platform=org.hibernate.dialect.Oracle12cDialect

spring.jpa.properties.hibernate.format_sql=true



Раствор


Вам следует добавить Hibernate Dialect

 в ваше приложение.свойства

 вот так
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect


Ответил - Кирилл Гросу


Ответ проверен - Кэндис Джонсон (волонтер JavaFixing)


Я реализовал простое приложение в Hibernate-4. Это приложение извлекает значение из таблицы. Но когда я пытаюсь получить пластинку с этим
(Booking) session.get(Booking.class, 3740456);


это исключение
INFO: HHH000327: Error performing load command : org.hibernate.exception.SQLGrammarException: could not extract ResultSet


Итак, чтобы проверить в базе данных имя таблицы и столбца, я копирую запрос из оператора журнала и выполняю его. Это дает мне правильный результат.


Я проверил несколько вопросов и ответов, связанных с этим вопросом, но смог найти решение.
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>

        <property name="connection.url">jdbc:oracle:thin:@SHKG9072DB:5030:TMSD10G2</property>
        <property name="connection.username">ICTDEV$EDI_APP</property>
        <property name="connection.password">p2II9JLIaea06</property>
        <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>

        <property name="show_sql">true</property>

        <property name="format_sql">true</property>

        <property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
        <property name = "hibernate.jdbc.lob.non_contextual_creation">true</property>  


        <property name="connection.pool_size">1</property>
        <property name="current_session_context_class">thread</property>

        <mapping class="com.hibernate.demo.Booking"/> 

    </session-factory>
</hibernate-configuration>
package com.hibernate.demo;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;


@Entity
@Table(name="EDI_IN_BOOKING")
public class Booking {

    /**
    * 
    */
    private static final long serialVersionUID = 1L;

    @Id 
    private int id;

    @Column(name="SITE_AN")
    private String site;


    @Column(name="EVENT_ID")
    private int eventId;

    @Column(name="EVENT_DETAIL_ID")
    private int eventDetailId;

    @Column(name="RECORD_SEQUENCE_ID")
    private int recordSequenceId;

    @Column(name="RECORD_TYPE_N")
    int recordType; 

    @Column(name="EDI_SENDER_AN")
    String sender;

    @Column(name="EDI_RECIPIENT_AN")
    String recipient;

    @Column(name="PARTNER_C")
    String partner;

    @Column(name="SENDER_SEQUENCE_AN")
    String senderSequence;




    public String getSite() {
        return site;
    }

    public void setSite(String site) {
        this.site = (site);
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = (id);
    }

    public int getEventId() {
        return eventId;
    }

    public void setEventId(int eventId) {
        this.eventId = (eventId);
    }

    public int getEventDetailId() {
        return eventDetailId;
    }

    public void setEventDetailId(int eventDetailId) {
        this.eventDetailId = (eventDetailId);
    }

    public int getRecordSequenceId() {
        return recordSequenceId;
    }

    public void setRecordSequenceId(int recordSequenceId) {
        this.recordSequenceId = (recordSequenceId);
    }

    public int getRecordType() {
        return recordType;
    }

    public void setRecordType(int recordType) {
        this.recordType = (recordType);
    }

    public String getSender() {
        return sender;
    }

    public void setSender(String sender) {
        this.sender = (sender);
    }

    public String getRecipient() {
        return recipient;
    }

    public void setRecipient(String recipient) {
        this.recipient = (recipient);
    }

    public String getPartner() {
        return partner;
    }

    public void setPartner(String partner) {
        this.partner = (partner);
    }

    public String getSenderSequence() {
        return senderSequence;
    }

    public void setSenderSequence(String senderSequence) {
        this.senderSequence = (senderSequence);
    }



}
package com.hibernate.demo;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;

public class Main {

    public static void main(String[] args) {
        System.out.println("Hello World");
        System.out.println("Trying to create a test connection with the database.");
        Configuration configuration = new Configuration().configure("hibernate.cfg.xml");
        StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder();
        serviceRegistryBuilder.applySettings(configuration.getProperties());
        ServiceRegistry serviceRegistry = serviceRegistryBuilder.build();
        SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);

        Session session = sessionFactory.getCurrentSession(); 

        session.beginTransaction();
        Booking booking = (Booking) session.get(Booking.class, 3740456);        
        System.out.println(booking.getEventDetailId());
    }

}
desc EDi_IN_BOOKING
ID                             NOT NULL NUMBER                                                                                                                                                                                        
EVENT_ID                       NOT NULL NUMBER                                                                                                                                                                                        
EVENT_DETAIL_ID                NOT NULL NUMBER                                                                                                                                                                                        
RECORD_SEQUENCE_ID             NOT NULL NUMBER                                                                                                                                                                                        
RECORD_TYPE_N                           NUMBER

SITE_AN VARCHAR2select name from customer; EDI_SENDER_AN VARCHAR2EDI_RECIPIENT_AN VARCHAR2PARTNER_C VARCHAR2 SENDER_SEQUENCE_AN VARCHAR2
Запрос из журнала (это дает правильный результат) select booking0_.id as id1_0_0_, booking0_.EVENT_DETAIL_ID as EVENT_DETAIL_ID2_0_0_, booking0_.EVENT_ID as EVENT_ID3_0_0_, booking0_.PARTNER_C as PARTNER_C4_0_0_, booking0_.EDI_RECIPIENT_AN as EDI_RECIPIENT_AN5_0_0_, booking0_.RECORD_SEQUENCE_ID as RECORD_SEQUENCE_ID6_0_0_, booking0_.RECORD_TYPE_N as RECORD_TYPE_N7_0_0_, booking0_.EDI_SENDER_AN as EDI_SENDER_AN8_0_0_, booking0_.SENDER_SEQUENCE_AN as SENDER_SEQUENCE_AN9_0_0_, booking0_.site_an as site_an10_0_0_ from EDI_IN_BOOKING booking0_ where booking0_.id=3740456; INFO: HHH000397: Using ASTQueryTranslatorFactory Hibernate: select booking0_.id as id1_0_0_, booking0_.EVENT_DETAIL_ID as EVENT_DETAIL_ID2_0_0_, booking0_.EVENT_ID as EVENT_ID3_0_0_, booking0_.PARTNER_C as PARTNER_C4_0_0_, booking0_.EDI_RECIPIENT_AN as EDI_RECIPIENT_AN5_0_0_, booking0_.RECORD_SEQUENCE_ID as RECORD_SEQUENCE_ID6_0_0_, booking0_.RECORD_TYPE_N as RECORD_TYPE_N7_0_0_, booking0_.EDI_SENDER_AN as EDI_SENDER_AN8_0_0_, booking0_.SENDER_SEQUENCE_AN as SENDER_SEQUENCE_AN9_0_0_, booking0_.site_an as site_an10_0_0_ from EDI_IN_BOOKING booking0_ where booking0_.id=? May 22, 2015 10:49:43 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions WARN: SQL Error: 904, SQLState: 42000 May 22, 2015 10:49:43 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions ERROR: ORA-00904: "BOOKING0_"."SITE_AN": invalid identifier May 22, 2015 10:49:43 AM org.hibernate.event.internal.DefaultLoadEventListener onLoad INFO: HHH000327: Error performing load command : org.hibernate.exception.SQLGrammarException: could not extract ResultSet Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not extract ResultSet at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:123) 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.plan.exec.internal.AbstractLoadPlanBasedLoader.getResultSet(AbstractLoadPlanBasedLoader.java:449) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeQueryStatement(AbstractLoadPlanBasedLoader.java:202) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:137) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:102) at org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.load(AbstractLoadPlanBasedEntityLoader.java:186) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:4126) at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:503) at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:468) at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:213) at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:275) at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:151) at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1106) at org.hibernate.internal.SessionImpl.access00(SessionImpl.java:176) at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2587) at org.hibernate.internal.SessionImpl.get(SessionImpl.java:991) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:356) at $Proxy7.get(Unknown Source) at com.dpworld.demo.Main.main(Main.java:23) Caused by: java.sql.SQLException: ORA-00904: "BOOKING0_"."SITE_AN": invalid identifier at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289) at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:589) at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1957) at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(TTC7Protocol.java:850) at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2555) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2896) at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:644) at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:570) at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:82) ... 22 more 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.hql.QueryLoader.list(QueryLoader.java:497) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:387) at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:236) at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1300) at org.hibernate.internal.QueryImpl.list(QueryImpl.java:103) at com.icss.framework.service.BaseService.queryByHql(BaseService.java:746) at com.icss.aqxxzy.service.SearchService.search147Info(SearchService.java:359) at com.icss.aqxxzy.controller.SearchController.search147(SearchController.java:149) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at com.icss.resourceone.sdk.SdkFilter.doFilter(SdkFilter.java:166) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:662) Caused by: java.sql.SQLSyntaxErrorException: ORA-00942: Table or view does not exist 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.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:82) ... 58 more Подробности об ошибке: набор результатов не может быть инициализирован, поскольку таблица или представление не существует 1. Класс сущности Java не соответствует типу данных поля базы данных, нет проблем 2. Если имя таблицы отличается от имени в базе данных, добавьте имя таблицы еще раз 3. Значение имени, соответствующее столбцу, не соответствует регистру поля базы данных 4. Файл конфигурации неправильно подключен к базе данных Вышеуказанные распространенные причины ошибок исключены, проблем нет Причина ошибки: база данных, по которой построена таблица, отличается от базы данных, к которой подключен файл конфигурации, и не проверен тщательно адрес базы данных, по которой построена таблица Воспроизведено: https://www.cnblogs.com/baijingting/p/9711813.html Подробнее:
  • DEFAULT NULL, `date` date DEFAULT NULL, `author` varcharDEFAULT NULL, `price` intorg.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) root cause org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82) org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) root cause com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.ID_CATALOG' in 'field list' sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) java.lang.reflect.Constructor.newInstance(Unknown Source) com.mysql.jdbc.Util.handleNewInstance(Util.java:411) com.mysql.jdbc.Util.getInstance(Util.java:386) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815) com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815) org.hibernate.loader.Loader.doQuery(Loader.java:899) org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) org.hibernate.loader.Loader.doList(Loader.java:2522) org.hibernate.loader.Loader.doList(Loader.java:2508) org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338) org.hibernate.loader.Loader.list(Loader.java:2333) org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490) DEFAULT NULL, `catalog_id` intorg.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) root cause org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82) org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) root cause com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.ID_CATALOG' in 'field list' sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) java.lang.reflect.Constructor.newInstance(Unknown Source) com.mysql.jdbc.Util.handleNewInstance(Util.java:411) com.mysql.jdbc.Util.getInstance(Util.java:386) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815) com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815) org.hibernate.loader.Loader.doQuery(Loader.java:899) org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) org.hibernate.loader.Loader.doList(Loader.java:2522) org.hibernate.loader.Loader.doList(Loader.java:2508) org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338) org.hibernate.loader.Loader.list(Loader.java:2333) org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490) DEFAULT NULL, `linkimage` varcharDEFAULT NULL, PRIMARY KEY (`id_product`), KEY `FK_Product_idx` (`catalog_id`), CONSTRAINT `FK_Product` FOREIGN KEY (`catalog_id`) REFERENCES `catalog` (`ID_CATALOG`) ON DELETE NO ACTION ON UPDATE NO ACTION )
  • Решение – 1 Попробуйте использовать внутреннее соединение в своем запросе Query query=session.createQuery("from Product as p INNER JOIN p.catalog as c WHERE c.idCatalog= :id and p.productName like :XXX"); query.setParameter("id", 7); query.setParameter("xxx", "%"+abc+"%"); List list = query.list(); также в файле конфигурации спящего режима есть <!--hibernate.cfg.xml --> <property name="show_sql">true</property> Для отображения на консоли того, что запрашивается. Решение – 2 На Product выше, имя объединяемого столбца установлено на ID_CATALOG . @ManyToOne @JoinColumn(name="ID_CATALOG") private Catalog catalog; Однако внешний ключ на Product стол называется catalog_id `catalog_id` intorg.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) root cause org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82) org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) root cause com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.ID_CATALOG' in 'field list' sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) java.lang.reflect.Constructor.newInstance(Unknown Source) com.mysql.jdbc.Util.handleNewInstance(Util.java:411) com.mysql.jdbc.Util.getInstance(Util.java:386) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815) com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815) org.hibernate.loader.Loader.doQuery(Loader.java:899) org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) org.hibernate.loader.Loader.doList(Loader.java:2522) org.hibernate.loader.Loader.doList(Loader.java:2508) org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338) org.hibernate.loader.Loader.list(Loader.java:2333) org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490) DEFAULT NULL, Решение – 3 У меня была похожая проблема. Попробуйте использовать редактор HQL. Он отобразит вам SQL (поскольку у вас есть исключение из грамматики SQL). Скопируйте свой SQL и выполните его отдельно. В моем случае проблема была в определении схемы. Я определил схему, но мне следует оставить ее пустой. Это вызвало то же исключение, что и вы. А описание ошибки отражало фактическое состояние, поскольку имя схемы было включено в оператор SQL. Решение – 4 Другая потенциальная причина, по которой другие люди сталкиваются с тем же сообщением об ошибке, заключается в том, что эта ошибка возникнет, если вы обращаетесь к таблице в схеме, отличной от той, с которой вы прошли аутентификацию. В этом случае вам нужно будет добавить имя схемы в запись вашего объекта: @Table(name= "catalog", schema = "targetSchemaName") Решение – 5 Если у вас нет последовательности «HIBERNATE_SEQUENCE», созданной в базе данных (если вы используете oracle или любую базу данных на основе последовательностей), вы получите тот же тип ошибки; Убедитесь, что последовательность присутствует; Решение – 6 Я столкнулся с той же проблемой после переноса базы данных с онлайн-сервера на локальный хост. Схема изменилась, поэтому мне пришлось определять ее вручную для каждой таблицы: @Entity @Table(name = "ESBCORE_DOMAIN", schema = "SYS") Решение – 7 @OneToMany(mappedBy="catalog", fetch = FetchType.LAZY) @JsonIgnore private Set<Product> products = new HashSet<Product>(0); Решение – 8 spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl ранее получала ошибку There was an unexpected error (type=Internal Server Error, status=500). could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:280) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:254) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:528) at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:153) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) Решение – 9 У меня была такая же проблема, когда я пытался обновить строку: @Query(value = "UPDATE data SET value = 'asdf'", nativeQuery = true) void setValue(); @Modifying @Query(value = "UPDATE data SET value = 'asdf'", nativeQuery = true) void setValue(); Раствор – 10 Я использовал Spring Data JPA с PostgreSql, и во время вызова UPDATE показывались ошибки — ‘ не удалось извлечь ResultSet ‘ и еще один. org.springframework.dao. InvalidDataAccessApiUsageException: выполнение запрос на обновление/удаление; вложенное исключение javax.persistence. TransactionRequiredException: выполнение обновить/удалить запрос. ( Требуется отображение транзакций. ) Вообще-то меня не было две обязательные аннотации. @Transactional и @Модификация @Query(vlaue = " UPDATE DB.TABLE SET Col1 = ?1 WHERE id = ?2 ", nativeQuery = true) void updateCol1(String value, long id); Решение – 11 Для MySql учтите, что не стоит писать верблюжий регистр . Например, если схема такая: CREATE TABLE IF NOT EXISTS `task`( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `teaching_hours` DECIMAL(5,2) DEFAULT NULL, `isActive` BOOLEAN DEFAULT FALSE, `is_validated` BOOLEAN DEFAULT FALSE, ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Вы должны быть очень осторожны, потому что isActive столбец будет преобразован в isactive . Итак, в вашем классе Entity должно быть так: @Basic @Column(name = "isactive", nullable = true) public boolean isActive() { return isActive; } public void setActive(boolean active) { isActive = active; } По крайней мере, это была моя проблема, из-за которой я получил вашу ошибку Решение – 12 Это сообщение также появляется, если вы по ошибке используете зарезервированное ключевое слово для своей таблицы ( https://dev.mysql.com/doc/refman/8.0/en/keywords.html#keywords-8- 0-подробно-C ). При объединении таблицы, имя которой совпадает с зарезервированным ключевым словом mysql, вы получите то же сообщение, хотя все остальное правильно. Надеюсь, это сэкономит время и боль другим людям. Решение – 13 Я воспроизвел похожую проблему: Caused by: org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:279) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:253) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:527) at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ... Caused by: java.sql.SQLSyntaxErrorException: Unknown column 'setting0_.advance_payment_first_text' in 'field list' at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:975) И в моем конкретном случае это произошло из-за конфликта между новым дампом, который использовался для базы данных, и liquibase файлы конфигурации data.xml с логикой типа: <changeSet author="liquibase-docs" id="sqlFile-data"> <sqlFile dbms="!h2, oracle, mysql" encoding="UTF-8" path="......sqldata.sql" relativeToChangelogFile="true" splitStatements="true" stripComments="true"/> </changeSet> <changeSet author="liquibase-docs" id="sqlFile-structure"> <sqlFile dbms="!h2, oracle, mysql" encoding="UTF-8" path="......sqlstructure.sql" relativeToChangelogFile="true" splitStatements="true" stripComments="true"/> </changeSet> для старых скриптов проекта. После некоторых исследований, проверив соответствие таблиц столбцам в коде, я понял, что эти старые скрипты перезаписываются после запуска нового дампа проекта. Итак после удаления старых скриптов data.sql и structure.sql с файлами конфигурации data.xml и structure.xml из проекта эта проблема была решена. Решение – 14 в моем случае я изменил свойство ddl на create-drop и запустил его после удаления таблиц. просто ставим ddl на создание, и после этого возвращаемся в none (чтобы больше не менять базу) Решение – 15 Для меня проблема заключалась в первую очередь в различиях в верхнем и нижнем регистре между моим локальным рабочим пространством и именем таблицы сервера базы данных разработки. select name from customer; select name from Customer; Исправив опечатку, ошибка исчезла. Надеюсь, для кого-то это станет решением. Выпуск Мой пример кода здесь @Entity @Table(name = "catalog") public class Catalog implements Serializable { @Id @Column(name="ID_CATALOG") @GeneratedValue private Integer idCatalog; @Column(name="Catalog_Name") private String catalogName; @OneToMany(mappedBy="catalog", fetch = FetchType.LAZY) private Set<Product> products = new HashSet<Product>(0); //getter & setter & constructor //... } @Entity @Table(name = "product") public class Product implements Serializable { @Id @Column(name="id_product") @GeneratedValue private Integer idProduct; @ManyToOne @JoinColumn(name="ID_CATALOG") private Catalog catalog; @Column(name="product_name") private String productName; @Column(name="date") private Date date; @Column(name="author") private String author; @Column(name="price") private Integer price; @Column(name="linkimage") private String linkimage; //getter & setter & constructor } @Repository @SuppressWarnings({"unchecked", "rawtypes"}) public class ProductDAOImpl implements ProductDAO { @Autowired private SessionFactory sessionFactory; public List<Product> searchProductByCatalog(String catalogid, String keyword) { String sql = "select p from Product p where 1 = 1"; Session session = sessionFactory.getCurrentSession(); if (keyword.trim().equals("") == false) { sql += " and p.productName like '%" + keyword + "%'"; } if (catalogid.trim().equals("-1") == false && catalogid.trim().equals("") == false) { sql += " and p.catalog.idCatalog = " + Integer.parseInt(catalogid); } Query query = session.createQuery(sql); List listProduct = query.list(); return listProduct; } } <!-- Scan classpath for annotations (eg: @Service, @Repository etc) --> <context:component-scan base-package="com.shopmvc"/> <!-- JDBC Data Source. It is assumed you have MySQL running on localhost port 3306 with username root and blank password. Change below if it's not the case --> <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/shoesshopdb?autoReconnect=true"/> <property name="username" value="root"/> <property name="password" value="12345"/> <property name="validationQuery" value="SELECT 1"/> </bean> <!-- Hibernate Session Factory --> <bean id="mySessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="myDataSource"/> <property name="packagesToScan"> <array> <value>com.shopmvc.pojo</value> </array> </property> <property name="hibernateProperties"> <value> hibernate.dialect=org.hibernate.dialect.MySQLDialect </value> </property> </bean> <!-- Hibernate Transaction Manager --> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="mySessionFactory"/> </bean> <!-- Activates annotation based transaction management --> <tx:annotation-driven transaction-manager="transactionManager"/> org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) root cause org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82) org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) root cause com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.ID_CATALOG' in 'field list' sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) java.lang.reflect.Constructor.newInstance(Unknown Source) com.mysql.jdbc.Util.handleNewInstance(Util.java:411) com.mysql.jdbc.Util.getInstance(Util.java:386) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815) com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815) org.hibernate.loader.Loader.doQuery(Loader.java:899) org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) org.hibernate.loader.Loader.doList(Loader.java:2522) org.hibernate.loader.Loader.doList(Loader.java:2508) org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338) org.hibernate.loader.Loader.list(Loader.java:2333) org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490) CREATE TABLE `catalog` ( `ID_CATALOG` int
     NOT NULL AUTO_INCREMENT,
      `Catalog_Name` varchar

    DEFAULT NULL, PRIMARY KEY (`ID_CATALOG`) ) CREATE TABLE `product` ( `id_product` int
     NOT NULL AUTO_INCREMENT,
      `product_name` varchar

    DEFAULT NULL, `date` date DEFAULT NULL, `author` varchar DEFAULT NULL, `price` int
     DEFAULT NULL,
      `catalog_id` int
     DEFAULT NULL,
      `linkimage` varchar

    DEFAULT NULL, PRIMARY KEY (`id_product`), KEY `FK_Product_idx` (`catalog_id`), CONSTRAINT `FK_Product` FOREIGN KEY (`catalog_id`) REFERENCES `catalog` (`ID_CATALOG`) ON DELETE NO ACTION ON UPDATE NO ACTION ) Решение На Product выше, имя объединяемого столбца установлено на ID_CATALOG . @ManyToOne @JoinColumn(name="ID_CATALOG") private Catalog catalog; Однако внешний ключ на Product стол называется catalog_id `catalog_id` int
     DEFAULT NULL,
    
    
    Ответил - Уилл Килинг
    Выпуск
    
    
    У меня есть Spring Boot, связанный с приложением Oracle Database. Та же версия приложения отлично работает с MySQL, но когда я пытаюсь выполнить несколько запросов к базе данных Oracle, выдается ошибка:
    
    
    
    Итак, вот мой метод контроллера для этой функции:
    @PostMapping("/expense")
        ResponseEntity<Expense> createExpense(@Valid @RequestBody Expense expense) throws URISyntaxException {
    
            Expense result = expenseRepository.save(expense);
            return ResponseEntity.created(new URI("/api/expense/" + result.getId())).body(result);
        }
    
    
    И мои расходы
    
     модель
    @NoArgsConstructor
    @Data
    @Table(name="expense")
    @Entity
    public class Expense {
    
        @Id
        @GeneratedValue(strategy= GenerationType.AUTO)
        private Long id;
    
        private Instant date; 
    
        private double amount;
        
        private String description;
    
        @ManyToOne
        private Category category;
    
        @ManyToOne
        private User user;
    
    // Getters and setters
    
    
    Вот моё приложение.свойства
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle12cDialect
    spring.jpa.properties.hibernate.ddl-auto=create-drop
    spring.jpa.properties.hibernate.show-sql=true
    
    spring.datasource.url=jdbc:oracle:thin:@localhost:1521:XE
    spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
    spring.datasource.username=system
    spring.datasource.password=root
    spring.datasource.initialization-mode=always
    spring.datasource.validationQuery=SELECT 1
    
    logging.level.org.hibernate.SQL=DEBUG
    spring.server.compression.enabled=true
    
    spring.jpa.database-platform=org.hibernate.dialect.Oracle12cDialect
    
    spring.jpa.properties.hibernate.format_sql=true
    
    
    
    Раствор
    
    
    Вам следует добавить Hibernate Dialect
    
     в ваше приложение.свойства
    
     вот так
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
    spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect
    
    
    Ответил - Кирилл Гросу
    
    
    Ответ проверен - Кэндис Джонсон (волонтер JavaFixing)
    
    
    Я реализовал простое приложение в Hibernate-4. Это приложение извлекает значение из таблицы. Но когда я пытаюсь получить пластинку с этим
    (Booking) session.get(Booking.class, 3740456);
    
    
    это исключение
    INFO: HHH000327: Error performing load command : org.hibernate.exception.SQLGrammarException: could not extract ResultSet
    
    
    Итак, чтобы проверить в базе данных имя таблицы и столбца, я копирую запрос из оператора журнала и выполняю его. Это дает мне правильный результат.
    
    
    Я проверил несколько вопросов и ответов, связанных с этим вопросом, но смог найти решение.
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    
    <hibernate-configuration>
        <session-factory>
    
            <property name="connection.url">jdbc:oracle:thin:@SHKG9072DB:5030:TMSD10G2</property>
            <property name="connection.username">ICTDEV$EDI_APP</property>
            <property name="connection.password">p2II9JLIaea06</property>
            <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
            <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
    
            <property name="show_sql">true</property>
    
            <property name="format_sql">true</property>
    
            <property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
            <property name = "hibernate.jdbc.lob.non_contextual_creation">true</property>  
    
    
            <property name="connection.pool_size">1</property>
            <property name="current_session_context_class">thread</property>
    
            <mapping class="com.hibernate.demo.Booking"/> 
    
        </session-factory>
    </hibernate-configuration>
    package com.hibernate.demo;
    
    import java.io.Serializable;
    
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.Table;
    
    
    @Entity
    @Table(name="EDI_IN_BOOKING")
    public class Booking {
    
        /**
        * 
        */
        private static final long serialVersionUID = 1L;
    
        @Id 
        private int id;
    
        @Column(name="SITE_AN")
        private String site;
    
    
        @Column(name="EVENT_ID")
        private int eventId;
    
        @Column(name="EVENT_DETAIL_ID")
        private int eventDetailId;
    
        @Column(name="RECORD_SEQUENCE_ID")
        private int recordSequenceId;
    
        @Column(name="RECORD_TYPE_N")
        int recordType; 
    
        @Column(name="EDI_SENDER_AN")
        String sender;
    
        @Column(name="EDI_RECIPIENT_AN")
        String recipient;
    
        @Column(name="PARTNER_C")
        String partner;
    
        @Column(name="SENDER_SEQUENCE_AN")
        String senderSequence;
    
    
    
    
        public String getSite() {
            return site;
        }
    
        public void setSite(String site) {
            this.site = (site);
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = (id);
        }
    
        public int getEventId() {
            return eventId;
        }
    
        public void setEventId(int eventId) {
            this.eventId = (eventId);
        }
    
        public int getEventDetailId() {
            return eventDetailId;
        }
    
        public void setEventDetailId(int eventDetailId) {
            this.eventDetailId = (eventDetailId);
        }
    
        public int getRecordSequenceId() {
            return recordSequenceId;
        }
    
        public void setRecordSequenceId(int recordSequenceId) {
            this.recordSequenceId = (recordSequenceId);
        }
    
        public int getRecordType() {
            return recordType;
        }
    
        public void setRecordType(int recordType) {
            this.recordType = (recordType);
        }
    
        public String getSender() {
            return sender;
        }
    
        public void setSender(String sender) {
            this.sender = (sender);
        }
    
        public String getRecipient() {
            return recipient;
        }
    
        public void setRecipient(String recipient) {
            this.recipient = (recipient);
        }
    
        public String getPartner() {
            return partner;
        }
    
        public void setPartner(String partner) {
            this.partner = (partner);
        }
    
        public String getSenderSequence() {
            return senderSequence;
        }
    
        public void setSenderSequence(String senderSequence) {
            this.senderSequence = (senderSequence);
        }
    
    
    
    }
    package com.hibernate.demo;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.service.ServiceRegistry;
    
    public class Main {
    
        public static void main(String[] args) {
            System.out.println("Hello World");
            System.out.println("Trying to create a test connection with the database.");
            Configuration configuration = new Configuration().configure("hibernate.cfg.xml");
            StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder();
            serviceRegistryBuilder.applySettings(configuration.getProperties());
            ServiceRegistry serviceRegistry = serviceRegistryBuilder.build();
            SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
    
            Session session = sessionFactory.getCurrentSession(); 
    
            session.beginTransaction();
            Booking booking = (Booking) session.get(Booking.class, 3740456);        
            System.out.println(booking.getEventDetailId());
        }
    
    }
    desc EDi_IN_BOOKING
    ID                             NOT NULL NUMBER                                                                                                                                                                                        
    EVENT_ID                       NOT NULL NUMBER                                                                                                                                                                                        
    EVENT_DETAIL_ID                NOT NULL NUMBER                                                                                                                                                                                        
    RECORD_SEQUENCE_ID             NOT NULL NUMBER                                                                                                                                                                                        
    RECORD_TYPE_N                           NUMBER

    SITE_AN VARCHAR2select name from customer; EDI_SENDER_AN VARCHAR2EDI_RECIPIENT_AN VARCHAR2PARTNER_C VARCHAR2 SENDER_SEQUENCE_AN VARCHAR2
    Запрос из журнала (это дает правильный результат) select booking0_.id as id1_0_0_, booking0_.EVENT_DETAIL_ID as EVENT_DETAIL_ID2_0_0_, booking0_.EVENT_ID as EVENT_ID3_0_0_, booking0_.PARTNER_C as PARTNER_C4_0_0_, booking0_.EDI_RECIPIENT_AN as EDI_RECIPIENT_AN5_0_0_, booking0_.RECORD_SEQUENCE_ID as RECORD_SEQUENCE_ID6_0_0_, booking0_.RECORD_TYPE_N as RECORD_TYPE_N7_0_0_, booking0_.EDI_SENDER_AN as EDI_SENDER_AN8_0_0_, booking0_.SENDER_SEQUENCE_AN as SENDER_SEQUENCE_AN9_0_0_, booking0_.site_an as site_an10_0_0_ from EDI_IN_BOOKING booking0_ where booking0_.id=3740456; INFO: HHH000397: Using ASTQueryTranslatorFactory Hibernate: select booking0_.id as id1_0_0_, booking0_.EVENT_DETAIL_ID as EVENT_DETAIL_ID2_0_0_, booking0_.EVENT_ID as EVENT_ID3_0_0_, booking0_.PARTNER_C as PARTNER_C4_0_0_, booking0_.EDI_RECIPIENT_AN as EDI_RECIPIENT_AN5_0_0_, booking0_.RECORD_SEQUENCE_ID as RECORD_SEQUENCE_ID6_0_0_, booking0_.RECORD_TYPE_N as RECORD_TYPE_N7_0_0_, booking0_.EDI_SENDER_AN as EDI_SENDER_AN8_0_0_, booking0_.SENDER_SEQUENCE_AN as SENDER_SEQUENCE_AN9_0_0_, booking0_.site_an as site_an10_0_0_ from EDI_IN_BOOKING booking0_ where booking0_.id=? May 22, 2015 10:49:43 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions WARN: SQL Error: 904, SQLState: 42000 May 22, 2015 10:49:43 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions ERROR: ORA-00904: "BOOKING0_"."SITE_AN": invalid identifier May 22, 2015 10:49:43 AM org.hibernate.event.internal.DefaultLoadEventListener onLoad INFO: HHH000327: Error performing load command : org.hibernate.exception.SQLGrammarException: could not extract ResultSet Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not extract ResultSet at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:123) 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.plan.exec.internal.AbstractLoadPlanBasedLoader.getResultSet(AbstractLoadPlanBasedLoader.java:449) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeQueryStatement(AbstractLoadPlanBasedLoader.java:202) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:137) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:102) at org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.load(AbstractLoadPlanBasedEntityLoader.java:186) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:4126) at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:503) at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:468) at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:213) at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:275) at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:151) at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1106) at org.hibernate.internal.SessionImpl.access00(SessionImpl.java:176) at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2587) at org.hibernate.internal.SessionImpl.get(SessionImpl.java:991) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:356) at $Proxy7.get(Unknown Source) at com.dpworld.demo.Main.main(Main.java:23) Caused by: java.sql.SQLException: ORA-00904: "BOOKING0_"."SITE_AN": invalid identifier at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289) at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:589) at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1957) at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(TTC7Protocol.java:850) at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2555) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2896) at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:644) at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:570) at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:82) ... 22 more 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.hql.QueryLoader.list(QueryLoader.java:497) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:387) at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:236) at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1300) at org.hibernate.internal.QueryImpl.list(QueryImpl.java:103) at com.icss.framework.service.BaseService.queryByHql(BaseService.java:746) at com.icss.aqxxzy.service.SearchService.search147Info(SearchService.java:359) at com.icss.aqxxzy.controller.SearchController.search147(SearchController.java:149) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at com.icss.resourceone.sdk.SdkFilter.doFilter(SdkFilter.java:166) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:662) Caused by: java.sql.SQLSyntaxErrorException: ORA-00942: Table or view does not exist 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.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:82) ... 58 more Подробности об ошибке: набор результатов не может быть инициализирован, поскольку таблица или представление не существует 1. Класс сущности Java не соответствует типу данных поля базы данных, нет проблем 2. Если имя таблицы отличается от имени в базе данных, добавьте имя таблицы еще раз 3. Значение имени, соответствующее столбцу, не соответствует регистру поля базы данных 4. Файл конфигурации неправильно подключен к базе данных Вышеуказанные распространенные причины ошибок исключены, проблем нет Причина ошибки: база данных, по которой построена таблица, отличается от базы данных, к которой подключен файл конфигурации, и не проверен тщательно адрес базы данных, по которой построена таблица Воспроизведено: https://www.cnblogs.com/baijingting/p/9711813.html Подробнее:
  • DEFAULT NULL, `price` intorg.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) root cause org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82) org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) root cause com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.ID_CATALOG' in 'field list' sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) java.lang.reflect.Constructor.newInstance(Unknown Source) com.mysql.jdbc.Util.handleNewInstance(Util.java:411) com.mysql.jdbc.Util.getInstance(Util.java:386) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815) com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815) org.hibernate.loader.Loader.doQuery(Loader.java:899) org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) org.hibernate.loader.Loader.doList(Loader.java:2522) org.hibernate.loader.Loader.doList(Loader.java:2508) org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338) org.hibernate.loader.Loader.list(Loader.java:2333) org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490) DEFAULT NULL, `catalog_id` intorg.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) root cause org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82) org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) root cause com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.ID_CATALOG' in 'field list' sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) java.lang.reflect.Constructor.newInstance(Unknown Source) com.mysql.jdbc.Util.handleNewInstance(Util.java:411) com.mysql.jdbc.Util.getInstance(Util.java:386) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815) com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815) org.hibernate.loader.Loader.doQuery(Loader.java:899) org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) org.hibernate.loader.Loader.doList(Loader.java:2522) org.hibernate.loader.Loader.doList(Loader.java:2508) org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338) org.hibernate.loader.Loader.list(Loader.java:2333) org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490) DEFAULT NULL, `linkimage` varcharDEFAULT NULL, PRIMARY KEY (`id_product`), KEY `FK_Product_idx` (`catalog_id`), CONSTRAINT `FK_Product` FOREIGN KEY (`catalog_id`) REFERENCES `catalog` (`ID_CATALOG`) ON DELETE NO ACTION ON UPDATE NO ACTION )
  • Решение – 1 Попробуйте использовать внутреннее соединение в своем запросе Query query=session.createQuery("from Product as p INNER JOIN p.catalog as c WHERE c.idCatalog= :id and p.productName like :XXX"); query.setParameter("id", 7); query.setParameter("xxx", "%"+abc+"%"); List list = query.list(); также в файле конфигурации спящего режима есть <!--hibernate.cfg.xml --> <property name="show_sql">true</property> Для отображения на консоли того, что запрашивается. Решение – 2 На Product выше, имя объединяемого столбца установлено на ID_CATALOG . @ManyToOne @JoinColumn(name="ID_CATALOG") private Catalog catalog; Однако внешний ключ на Product стол называется catalog_id `catalog_id` intorg.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) root cause org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82) org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) root cause com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.ID_CATALOG' in 'field list' sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) java.lang.reflect.Constructor.newInstance(Unknown Source) com.mysql.jdbc.Util.handleNewInstance(Util.java:411) com.mysql.jdbc.Util.getInstance(Util.java:386) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815) com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815) org.hibernate.loader.Loader.doQuery(Loader.java:899) org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) org.hibernate.loader.Loader.doList(Loader.java:2522) org.hibernate.loader.Loader.doList(Loader.java:2508) org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338) org.hibernate.loader.Loader.list(Loader.java:2333) org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490) DEFAULT NULL, Решение – 3 У меня была похожая проблема. Попробуйте использовать редактор HQL. Он отобразит вам SQL (поскольку у вас есть исключение из грамматики SQL). Скопируйте свой SQL и выполните его отдельно. В моем случае проблема была в определении схемы. Я определил схему, но мне следует оставить ее пустой. Это вызвало то же исключение, что и вы. А описание ошибки отражало фактическое состояние, поскольку имя схемы было включено в оператор SQL. Решение – 4 Другая потенциальная причина, по которой другие люди сталкиваются с тем же сообщением об ошибке, заключается в том, что эта ошибка возникнет, если вы обращаетесь к таблице в схеме, отличной от той, с которой вы прошли аутентификацию. В этом случае вам нужно будет добавить имя схемы в запись вашего объекта: @Table(name= "catalog", schema = "targetSchemaName") Решение – 5 Если у вас нет последовательности «HIBERNATE_SEQUENCE», созданной в базе данных (если вы используете oracle или любую базу данных на основе последовательностей), вы получите тот же тип ошибки; Убедитесь, что последовательность присутствует; Решение – 6 Я столкнулся с той же проблемой после переноса базы данных с онлайн-сервера на локальный хост. Схема изменилась, поэтому мне пришлось определять ее вручную для каждой таблицы: @Entity @Table(name = "ESBCORE_DOMAIN", schema = "SYS") Решение – 7 @OneToMany(mappedBy="catalog", fetch = FetchType.LAZY) @JsonIgnore private Set<Product> products = new HashSet<Product>(0); Решение – 8 spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl ранее получала ошибку There was an unexpected error (type=Internal Server Error, status=500). could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:280) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:254) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:528) at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:153) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) Решение – 9 У меня была такая же проблема, когда я пытался обновить строку: @Query(value = "UPDATE data SET value = 'asdf'", nativeQuery = true) void setValue(); @Modifying @Query(value = "UPDATE data SET value = 'asdf'", nativeQuery = true) void setValue(); Раствор – 10 Я использовал Spring Data JPA с PostgreSql, и во время вызова UPDATE показывались ошибки — ‘ не удалось извлечь ResultSet ‘ и еще один. org.springframework.dao. InvalidDataAccessApiUsageException: выполнение запрос на обновление/удаление; вложенное исключение javax.persistence. TransactionRequiredException: выполнение обновить/удалить запрос. ( Требуется отображение транзакций. ) Вообще-то меня не было две обязательные аннотации. @Transactional и @Модификация @Query(vlaue = " UPDATE DB.TABLE SET Col1 = ?1 WHERE id = ?2 ", nativeQuery = true) void updateCol1(String value, long id); Решение – 11 Для MySql учтите, что не стоит писать верблюжий регистр . Например, если схема такая: CREATE TABLE IF NOT EXISTS `task`( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `teaching_hours` DECIMAL(5,2) DEFAULT NULL, `isActive` BOOLEAN DEFAULT FALSE, `is_validated` BOOLEAN DEFAULT FALSE, ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Вы должны быть очень осторожны, потому что isActive столбец будет преобразован в isactive . Итак, в вашем классе Entity должно быть так: @Basic @Column(name = "isactive", nullable = true) public boolean isActive() { return isActive; } public void setActive(boolean active) { isActive = active; } По крайней мере, это была моя проблема, из-за которой я получил вашу ошибку Решение – 12 Это сообщение также появляется, если вы по ошибке используете зарезервированное ключевое слово для своей таблицы ( https://dev.mysql.com/doc/refman/8.0/en/keywords.html#keywords-8- 0-подробно-C ). При объединении таблицы, имя которой совпадает с зарезервированным ключевым словом mysql, вы получите то же сообщение, хотя все остальное правильно. Надеюсь, это сэкономит время и боль другим людям. Решение – 13 Я воспроизвел похожую проблему: Caused by: org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:279) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:253) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:527) at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ... Caused by: java.sql.SQLSyntaxErrorException: Unknown column 'setting0_.advance_payment_first_text' in 'field list' at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:975) И в моем конкретном случае это произошло из-за конфликта между новым дампом, который использовался для базы данных, и liquibase файлы конфигурации data.xml с логикой типа: <changeSet author="liquibase-docs" id="sqlFile-data"> <sqlFile dbms="!h2, oracle, mysql" encoding="UTF-8" path="......sqldata.sql" relativeToChangelogFile="true" splitStatements="true" stripComments="true"/> </changeSet> <changeSet author="liquibase-docs" id="sqlFile-structure"> <sqlFile dbms="!h2, oracle, mysql" encoding="UTF-8" path="......sqlstructure.sql" relativeToChangelogFile="true" splitStatements="true" stripComments="true"/> </changeSet> для старых скриптов проекта. После некоторых исследований, проверив соответствие таблиц столбцам в коде, я понял, что эти старые скрипты перезаписываются после запуска нового дампа проекта. Итак после удаления старых скриптов data.sql и structure.sql с файлами конфигурации data.xml и structure.xml из проекта эта проблема была решена. Решение – 14 в моем случае я изменил свойство ddl на create-drop и запустил его после удаления таблиц. просто ставим ddl на создание, и после этого возвращаемся в none (чтобы больше не менять базу) Решение – 15 Для меня проблема заключалась в первую очередь в различиях в верхнем и нижнем регистре между моим локальным рабочим пространством и именем таблицы сервера базы данных разработки. select name from customer; select name from Customer; Исправив опечатку, ошибка исчезла. Надеюсь, для кого-то это станет решением. Выпуск Мой пример кода здесь @Entity @Table(name = "catalog") public class Catalog implements Serializable { @Id @Column(name="ID_CATALOG") @GeneratedValue private Integer idCatalog; @Column(name="Catalog_Name") private String catalogName; @OneToMany(mappedBy="catalog", fetch = FetchType.LAZY) private Set<Product> products = new HashSet<Product>(0); //getter & setter & constructor //... } @Entity @Table(name = "product") public class Product implements Serializable { @Id @Column(name="id_product") @GeneratedValue private Integer idProduct; @ManyToOne @JoinColumn(name="ID_CATALOG") private Catalog catalog; @Column(name="product_name") private String productName; @Column(name="date") private Date date; @Column(name="author") private String author; @Column(name="price") private Integer price; @Column(name="linkimage") private String linkimage; //getter & setter & constructor } @Repository @SuppressWarnings({"unchecked", "rawtypes"}) public class ProductDAOImpl implements ProductDAO { @Autowired private SessionFactory sessionFactory; public List<Product> searchProductByCatalog(String catalogid, String keyword) { String sql = "select p from Product p where 1 = 1"; Session session = sessionFactory.getCurrentSession(); if (keyword.trim().equals("") == false) { sql += " and p.productName like '%" + keyword + "%'"; } if (catalogid.trim().equals("-1") == false && catalogid.trim().equals("") == false) { sql += " and p.catalog.idCatalog = " + Integer.parseInt(catalogid); } Query query = session.createQuery(sql); List listProduct = query.list(); return listProduct; } } <!-- Scan classpath for annotations (eg: @Service, @Repository etc) --> <context:component-scan base-package="com.shopmvc"/> <!-- JDBC Data Source. It is assumed you have MySQL running on localhost port 3306 with username root and blank password. Change below if it's not the case --> <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/shoesshopdb?autoReconnect=true"/> <property name="username" value="root"/> <property name="password" value="12345"/> <property name="validationQuery" value="SELECT 1"/> </bean> <!-- Hibernate Session Factory --> <bean id="mySessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="myDataSource"/> <property name="packagesToScan"> <array> <value>com.shopmvc.pojo</value> </array> </property> <property name="hibernateProperties"> <value> hibernate.dialect=org.hibernate.dialect.MySQLDialect </value> </property> </bean> <!-- Hibernate Transaction Manager --> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="mySessionFactory"/> </bean> <!-- Activates annotation based transaction management --> <tx:annotation-driven transaction-manager="transactionManager"/> org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) root cause org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82) org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) root cause com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.ID_CATALOG' in 'field list' sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) java.lang.reflect.Constructor.newInstance(Unknown Source) com.mysql.jdbc.Util.handleNewInstance(Util.java:411) com.mysql.jdbc.Util.getInstance(Util.java:386) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815) com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815) org.hibernate.loader.Loader.doQuery(Loader.java:899) org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) org.hibernate.loader.Loader.doList(Loader.java:2522) org.hibernate.loader.Loader.doList(Loader.java:2508) org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338) org.hibernate.loader.Loader.list(Loader.java:2333) org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490) CREATE TABLE `catalog` ( `ID_CATALOG` int
     NOT NULL AUTO_INCREMENT,
      `Catalog_Name` varchar

    DEFAULT NULL, PRIMARY KEY (`ID_CATALOG`) ) CREATE TABLE `product` ( `id_product` int
     NOT NULL AUTO_INCREMENT,
      `product_name` varchar

    DEFAULT NULL, `date` date DEFAULT NULL, `author` varchar DEFAULT NULL, `price` int
     DEFAULT NULL,
      `catalog_id` int
     DEFAULT NULL,
      `linkimage` varchar

    DEFAULT NULL, PRIMARY KEY (`id_product`), KEY `FK_Product_idx` (`catalog_id`), CONSTRAINT `FK_Product` FOREIGN KEY (`catalog_id`) REFERENCES `catalog` (`ID_CATALOG`) ON DELETE NO ACTION ON UPDATE NO ACTION ) Решение На Product выше, имя объединяемого столбца установлено на ID_CATALOG . @ManyToOne @JoinColumn(name="ID_CATALOG") private Catalog catalog; Однако внешний ключ на Product стол называется catalog_id `catalog_id` int
     DEFAULT NULL,
    
    
    Ответил - Уилл Килинг
    Выпуск
    
    
    У меня есть Spring Boot, связанный с приложением Oracle Database. Та же версия приложения отлично работает с MySQL, но когда я пытаюсь выполнить несколько запросов к базе данных Oracle, выдается ошибка:
    
    
    
    Итак, вот мой метод контроллера для этой функции:
    @PostMapping("/expense")
        ResponseEntity<Expense> createExpense(@Valid @RequestBody Expense expense) throws URISyntaxException {
    
            Expense result = expenseRepository.save(expense);
            return ResponseEntity.created(new URI("/api/expense/" + result.getId())).body(result);
        }
    
    
    И мои расходы
    
     модель
    @NoArgsConstructor
    @Data
    @Table(name="expense")
    @Entity
    public class Expense {
    
        @Id
        @GeneratedValue(strategy= GenerationType.AUTO)
        private Long id;
    
        private Instant date; 
    
        private double amount;
        
        private String description;
    
        @ManyToOne
        private Category category;
    
        @ManyToOne
        private User user;
    
    // Getters and setters
    
    
    Вот моё приложение.свойства
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle12cDialect
    spring.jpa.properties.hibernate.ddl-auto=create-drop
    spring.jpa.properties.hibernate.show-sql=true
    
    spring.datasource.url=jdbc:oracle:thin:@localhost:1521:XE
    spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
    spring.datasource.username=system
    spring.datasource.password=root
    spring.datasource.initialization-mode=always
    spring.datasource.validationQuery=SELECT 1
    
    logging.level.org.hibernate.SQL=DEBUG
    spring.server.compression.enabled=true
    
    spring.jpa.database-platform=org.hibernate.dialect.Oracle12cDialect
    
    spring.jpa.properties.hibernate.format_sql=true
    
    
    
    Раствор
    
    
    Вам следует добавить Hibernate Dialect
    
     в ваше приложение.свойства
    
     вот так
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
    spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect
    
    
    Ответил - Кирилл Гросу
    
    
    Ответ проверен - Кэндис Джонсон (волонтер JavaFixing)
    
    
    Я реализовал простое приложение в Hibernate-4. Это приложение извлекает значение из таблицы. Но когда я пытаюсь получить пластинку с этим
    (Booking) session.get(Booking.class, 3740456);
    
    
    это исключение
    INFO: HHH000327: Error performing load command : org.hibernate.exception.SQLGrammarException: could not extract ResultSet
    
    
    Итак, чтобы проверить в базе данных имя таблицы и столбца, я копирую запрос из оператора журнала и выполняю его. Это дает мне правильный результат.
    
    
    Я проверил несколько вопросов и ответов, связанных с этим вопросом, но смог найти решение.
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    
    <hibernate-configuration>
        <session-factory>
    
            <property name="connection.url">jdbc:oracle:thin:@SHKG9072DB:5030:TMSD10G2</property>
            <property name="connection.username">ICTDEV$EDI_APP</property>
            <property name="connection.password">p2II9JLIaea06</property>
            <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
            <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
    
            <property name="show_sql">true</property>
    
            <property name="format_sql">true</property>
    
            <property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
            <property name = "hibernate.jdbc.lob.non_contextual_creation">true</property>  
    
    
            <property name="connection.pool_size">1</property>
            <property name="current_session_context_class">thread</property>
    
            <mapping class="com.hibernate.demo.Booking"/> 
    
        </session-factory>
    </hibernate-configuration>
    package com.hibernate.demo;
    
    import java.io.Serializable;
    
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.Table;
    
    
    @Entity
    @Table(name="EDI_IN_BOOKING")
    public class Booking {
    
        /**
        * 
        */
        private static final long serialVersionUID = 1L;
    
        @Id 
        private int id;
    
        @Column(name="SITE_AN")
        private String site;
    
    
        @Column(name="EVENT_ID")
        private int eventId;
    
        @Column(name="EVENT_DETAIL_ID")
        private int eventDetailId;
    
        @Column(name="RECORD_SEQUENCE_ID")
        private int recordSequenceId;
    
        @Column(name="RECORD_TYPE_N")
        int recordType; 
    
        @Column(name="EDI_SENDER_AN")
        String sender;
    
        @Column(name="EDI_RECIPIENT_AN")
        String recipient;
    
        @Column(name="PARTNER_C")
        String partner;
    
        @Column(name="SENDER_SEQUENCE_AN")
        String senderSequence;
    
    
    
    
        public String getSite() {
            return site;
        }
    
        public void setSite(String site) {
            this.site = (site);
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = (id);
        }
    
        public int getEventId() {
            return eventId;
        }
    
        public void setEventId(int eventId) {
            this.eventId = (eventId);
        }
    
        public int getEventDetailId() {
            return eventDetailId;
        }
    
        public void setEventDetailId(int eventDetailId) {
            this.eventDetailId = (eventDetailId);
        }
    
        public int getRecordSequenceId() {
            return recordSequenceId;
        }
    
        public void setRecordSequenceId(int recordSequenceId) {
            this.recordSequenceId = (recordSequenceId);
        }
    
        public int getRecordType() {
            return recordType;
        }
    
        public void setRecordType(int recordType) {
            this.recordType = (recordType);
        }
    
        public String getSender() {
            return sender;
        }
    
        public void setSender(String sender) {
            this.sender = (sender);
        }
    
        public String getRecipient() {
            return recipient;
        }
    
        public void setRecipient(String recipient) {
            this.recipient = (recipient);
        }
    
        public String getPartner() {
            return partner;
        }
    
        public void setPartner(String partner) {
            this.partner = (partner);
        }
    
        public String getSenderSequence() {
            return senderSequence;
        }
    
        public void setSenderSequence(String senderSequence) {
            this.senderSequence = (senderSequence);
        }
    
    
    
    }
    package com.hibernate.demo;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.service.ServiceRegistry;
    
    public class Main {
    
        public static void main(String[] args) {
            System.out.println("Hello World");
            System.out.println("Trying to create a test connection with the database.");
            Configuration configuration = new Configuration().configure("hibernate.cfg.xml");
            StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder();
            serviceRegistryBuilder.applySettings(configuration.getProperties());
            ServiceRegistry serviceRegistry = serviceRegistryBuilder.build();
            SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
    
            Session session = sessionFactory.getCurrentSession(); 
    
            session.beginTransaction();
            Booking booking = (Booking) session.get(Booking.class, 3740456);        
            System.out.println(booking.getEventDetailId());
        }
    
    }
    desc EDi_IN_BOOKING
    ID                             NOT NULL NUMBER                                                                                                                                                                                        
    EVENT_ID                       NOT NULL NUMBER                                                                                                                                                                                        
    EVENT_DETAIL_ID                NOT NULL NUMBER                                                                                                                                                                                        
    RECORD_SEQUENCE_ID             NOT NULL NUMBER                                                                                                                                                                                        
    RECORD_TYPE_N                           NUMBER

    SITE_AN VARCHAR2select name from customer; EDI_SENDER_AN VARCHAR2EDI_RECIPIENT_AN VARCHAR2PARTNER_C VARCHAR2 SENDER_SEQUENCE_AN VARCHAR2
    Запрос из журнала (это дает правильный результат) select booking0_.id as id1_0_0_, booking0_.EVENT_DETAIL_ID as EVENT_DETAIL_ID2_0_0_, booking0_.EVENT_ID as EVENT_ID3_0_0_, booking0_.PARTNER_C as PARTNER_C4_0_0_, booking0_.EDI_RECIPIENT_AN as EDI_RECIPIENT_AN5_0_0_, booking0_.RECORD_SEQUENCE_ID as RECORD_SEQUENCE_ID6_0_0_, booking0_.RECORD_TYPE_N as RECORD_TYPE_N7_0_0_, booking0_.EDI_SENDER_AN as EDI_SENDER_AN8_0_0_, booking0_.SENDER_SEQUENCE_AN as SENDER_SEQUENCE_AN9_0_0_, booking0_.site_an as site_an10_0_0_ from EDI_IN_BOOKING booking0_ where booking0_.id=3740456; INFO: HHH000397: Using ASTQueryTranslatorFactory Hibernate: select booking0_.id as id1_0_0_, booking0_.EVENT_DETAIL_ID as EVENT_DETAIL_ID2_0_0_, booking0_.EVENT_ID as EVENT_ID3_0_0_, booking0_.PARTNER_C as PARTNER_C4_0_0_, booking0_.EDI_RECIPIENT_AN as EDI_RECIPIENT_AN5_0_0_, booking0_.RECORD_SEQUENCE_ID as RECORD_SEQUENCE_ID6_0_0_, booking0_.RECORD_TYPE_N as RECORD_TYPE_N7_0_0_, booking0_.EDI_SENDER_AN as EDI_SENDER_AN8_0_0_, booking0_.SENDER_SEQUENCE_AN as SENDER_SEQUENCE_AN9_0_0_, booking0_.site_an as site_an10_0_0_ from EDI_IN_BOOKING booking0_ where booking0_.id=? May 22, 2015 10:49:43 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions WARN: SQL Error: 904, SQLState: 42000 May 22, 2015 10:49:43 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions ERROR: ORA-00904: "BOOKING0_"."SITE_AN": invalid identifier May 22, 2015 10:49:43 AM org.hibernate.event.internal.DefaultLoadEventListener onLoad INFO: HHH000327: Error performing load command : org.hibernate.exception.SQLGrammarException: could not extract ResultSet Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not extract ResultSet at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:123) 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.plan.exec.internal.AbstractLoadPlanBasedLoader.getResultSet(AbstractLoadPlanBasedLoader.java:449) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeQueryStatement(AbstractLoadPlanBasedLoader.java:202) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:137) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:102) at org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.load(AbstractLoadPlanBasedEntityLoader.java:186) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:4126) at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:503) at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:468) at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:213) at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:275) at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:151) at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1106) at org.hibernate.internal.SessionImpl.access00(SessionImpl.java:176) at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2587) at org.hibernate.internal.SessionImpl.get(SessionImpl.java:991) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:356) at $Proxy7.get(Unknown Source) at com.dpworld.demo.Main.main(Main.java:23) Caused by: java.sql.SQLException: ORA-00904: "BOOKING0_"."SITE_AN": invalid identifier at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289) at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:589) at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1957) at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(TTC7Protocol.java:850) at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2555) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2896) at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:644) at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:570) at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:82) ... 22 more 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.hql.QueryLoader.list(QueryLoader.java:497) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:387) at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:236) at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1300) at org.hibernate.internal.QueryImpl.list(QueryImpl.java:103) at com.icss.framework.service.BaseService.queryByHql(BaseService.java:746) at com.icss.aqxxzy.service.SearchService.search147Info(SearchService.java:359) at com.icss.aqxxzy.controller.SearchController.search147(SearchController.java:149) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at com.icss.resourceone.sdk.SdkFilter.doFilter(SdkFilter.java:166) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:662) Caused by: java.sql.SQLSyntaxErrorException: ORA-00942: Table or view does not exist 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.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:82) ... 58 more Подробности об ошибке: набор результатов не может быть инициализирован, поскольку таблица или представление не существует 1. Класс сущности Java не соответствует типу данных поля базы данных, нет проблем 2. Если имя таблицы отличается от имени в базе данных, добавьте имя таблицы еще раз 3. Значение имени, соответствующее столбцу, не соответствует регистру поля базы данных 4. Файл конфигурации неправильно подключен к базе данных Вышеуказанные распространенные причины ошибок исключены, проблем нет Причина ошибки: база данных, по которой построена таблица, отличается от базы данных, к которой подключен файл конфигурации, и не проверен тщательно адрес базы данных, по которой построена таблица Воспроизведено: https://www.cnblogs.com/baijingting/p/9711813.html Подробнее:
  • DEFAULT NULL, PRIMARY KEY (`id_product`), KEY `FK_Product_idx` (`catalog_id`), CONSTRAINT `FK_Product` FOREIGN KEY (`catalog_id`) REFERENCES `catalog` (`ID_CATALOG`) ON DELETE NO ACTION ON UPDATE NO ACTION )
  • Решение – 1 Попробуйте использовать внутреннее соединение в своем запросе Query query=session.createQuery("from Product as p INNER JOIN p.catalog as c WHERE c.idCatalog= :id and p.productName like :XXX"); query.setParameter("id", 7); query.setParameter("xxx", "%"+abc+"%"); List list = query.list(); также в файле конфигурации спящего режима есть <!--hibernate.cfg.xml --> <property name="show_sql">true</property> Для отображения на консоли того, что запрашивается. Решение – 2 На Product выше, имя объединяемого столбца установлено на ID_CATALOG . @ManyToOne @JoinColumn(name="ID_CATALOG") private Catalog catalog; Однако внешний ключ на Product стол называется catalog_id `catalog_id` intorg.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) root cause org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82) org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) root cause com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.ID_CATALOG' in 'field list' sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) java.lang.reflect.Constructor.newInstance(Unknown Source) com.mysql.jdbc.Util.handleNewInstance(Util.java:411) com.mysql.jdbc.Util.getInstance(Util.java:386) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815) com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815) org.hibernate.loader.Loader.doQuery(Loader.java:899) org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) org.hibernate.loader.Loader.doList(Loader.java:2522) org.hibernate.loader.Loader.doList(Loader.java:2508) org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338) org.hibernate.loader.Loader.list(Loader.java:2333) org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490) DEFAULT NULL, Решение – 3 У меня была похожая проблема. Попробуйте использовать редактор HQL. Он отобразит вам SQL (поскольку у вас есть исключение из грамматики SQL). Скопируйте свой SQL и выполните его отдельно. В моем случае проблема была в определении схемы. Я определил схему, но мне следует оставить ее пустой. Это вызвало то же исключение, что и вы. А описание ошибки отражало фактическое состояние, поскольку имя схемы было включено в оператор SQL. Решение – 4 Другая потенциальная причина, по которой другие люди сталкиваются с тем же сообщением об ошибке, заключается в том, что эта ошибка возникнет, если вы обращаетесь к таблице в схеме, отличной от той, с которой вы прошли аутентификацию. В этом случае вам нужно будет добавить имя схемы в запись вашего объекта: @Table(name= "catalog", schema = "targetSchemaName") Решение – 5 Если у вас нет последовательности «HIBERNATE_SEQUENCE», созданной в базе данных (если вы используете oracle или любую базу данных на основе последовательностей), вы получите тот же тип ошибки; Убедитесь, что последовательность присутствует; Решение – 6 Я столкнулся с той же проблемой после переноса базы данных с онлайн-сервера на локальный хост. Схема изменилась, поэтому мне пришлось определять ее вручную для каждой таблицы: @Entity @Table(name = "ESBCORE_DOMAIN", schema = "SYS") Решение – 7 @OneToMany(mappedBy="catalog", fetch = FetchType.LAZY) @JsonIgnore private Set<Product> products = new HashSet<Product>(0); Решение – 8 spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl ранее получала ошибку There was an unexpected error (type=Internal Server Error, status=500). could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:280) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:254) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:528) at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:153) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) Решение – 9 У меня была такая же проблема, когда я пытался обновить строку: @Query(value = "UPDATE data SET value = 'asdf'", nativeQuery = true) void setValue(); @Modifying @Query(value = "UPDATE data SET value = 'asdf'", nativeQuery = true) void setValue(); Раствор – 10 Я использовал Spring Data JPA с PostgreSql, и во время вызова UPDATE показывались ошибки — ‘ не удалось извлечь ResultSet ‘ и еще один. org.springframework.dao. InvalidDataAccessApiUsageException: выполнение запрос на обновление/удаление; вложенное исключение javax.persistence. TransactionRequiredException: выполнение обновить/удалить запрос. ( Требуется отображение транзакций. ) Вообще-то меня не было две обязательные аннотации. @Transactional и @Модификация @Query(vlaue = " UPDATE DB.TABLE SET Col1 = ?1 WHERE id = ?2 ", nativeQuery = true) void updateCol1(String value, long id); Решение – 11 Для MySql учтите, что не стоит писать верблюжий регистр . Например, если схема такая: CREATE TABLE IF NOT EXISTS `task`( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `teaching_hours` DECIMAL(5,2) DEFAULT NULL, `isActive` BOOLEAN DEFAULT FALSE, `is_validated` BOOLEAN DEFAULT FALSE, ) ENGINE=InnoDB DEFAULT CHARSET=utf8; Вы должны быть очень осторожны, потому что isActive столбец будет преобразован в isactive . Итак, в вашем классе Entity должно быть так: @Basic @Column(name = "isactive", nullable = true) public boolean isActive() { return isActive; } public void setActive(boolean active) { isActive = active; } По крайней мере, это была моя проблема, из-за которой я получил вашу ошибку Решение – 12 Это сообщение также появляется, если вы по ошибке используете зарезервированное ключевое слово для своей таблицы ( https://dev.mysql.com/doc/refman/8.0/en/keywords.html#keywords-8- 0-подробно-C ). При объединении таблицы, имя которой совпадает с зарезервированным ключевым словом mysql, вы получите то же сообщение, хотя все остальное правильно. Надеюсь, это сэкономит время и боль другим людям. Решение – 13 Я воспроизвел похожую проблему: Caused by: org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:279) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:253) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:527) at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ... Caused by: java.sql.SQLSyntaxErrorException: Unknown column 'setting0_.advance_payment_first_text' in 'field list' at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:975) И в моем конкретном случае это произошло из-за конфликта между новым дампом, который использовался для базы данных, и liquibase файлы конфигурации data.xml с логикой типа: <changeSet author="liquibase-docs" id="sqlFile-data"> <sqlFile dbms="!h2, oracle, mysql" encoding="UTF-8" path="......sqldata.sql" relativeToChangelogFile="true" splitStatements="true" stripComments="true"/> </changeSet> <changeSet author="liquibase-docs" id="sqlFile-structure"> <sqlFile dbms="!h2, oracle, mysql" encoding="UTF-8" path="......sqlstructure.sql" relativeToChangelogFile="true" splitStatements="true" stripComments="true"/> </changeSet> для старых скриптов проекта. После некоторых исследований, проверив соответствие таблиц столбцам в коде, я понял, что эти старые скрипты перезаписываются после запуска нового дампа проекта. Итак после удаления старых скриптов data.sql и structure.sql с файлами конфигурации data.xml и structure.xml из проекта эта проблема была решена. Решение – 14 в моем случае я изменил свойство ddl на create-drop и запустил его после удаления таблиц. просто ставим ddl на создание, и после этого возвращаемся в none (чтобы больше не менять базу) Решение – 15 Для меня проблема заключалась в первую очередь в различиях в верхнем и нижнем регистре между моим локальным рабочим пространством и именем таблицы сервера базы данных разработки. select name from customer; select name from Customer; Исправив опечатку, ошибка исчезла. Надеюсь, для кого-то это станет решением. Выпуск Мой пример кода здесь @Entity @Table(name = "catalog") public class Catalog implements Serializable { @Id @Column(name="ID_CATALOG") @GeneratedValue private Integer idCatalog; @Column(name="Catalog_Name") private String catalogName; @OneToMany(mappedBy="catalog", fetch = FetchType.LAZY) private Set<Product> products = new HashSet<Product>(0); //getter & setter & constructor //... } @Entity @Table(name = "product") public class Product implements Serializable { @Id @Column(name="id_product") @GeneratedValue private Integer idProduct; @ManyToOne @JoinColumn(name="ID_CATALOG") private Catalog catalog; @Column(name="product_name") private String productName; @Column(name="date") private Date date; @Column(name="author") private String author; @Column(name="price") private Integer price; @Column(name="linkimage") private String linkimage; //getter & setter & constructor } @Repository @SuppressWarnings({"unchecked", "rawtypes"}) public class ProductDAOImpl implements ProductDAO { @Autowired private SessionFactory sessionFactory; public List<Product> searchProductByCatalog(String catalogid, String keyword) { String sql = "select p from Product p where 1 = 1"; Session session = sessionFactory.getCurrentSession(); if (keyword.trim().equals("") == false) { sql += " and p.productName like '%" + keyword + "%'"; } if (catalogid.trim().equals("-1") == false && catalogid.trim().equals("") == false) { sql += " and p.catalog.idCatalog = " + Integer.parseInt(catalogid); } Query query = session.createQuery(sql); List listProduct = query.list(); return listProduct; } } <!-- Scan classpath for annotations (eg: @Service, @Repository etc) --> <context:component-scan base-package="com.shopmvc"/> <!-- JDBC Data Source. It is assumed you have MySQL running on localhost port 3306 with username root and blank password. Change below if it's not the case --> <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/shoesshopdb?autoReconnect=true"/> <property name="username" value="root"/> <property name="password" value="12345"/> <property name="validationQuery" value="SELECT 1"/> </bean> <!-- Hibernate Session Factory --> <bean id="mySessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="myDataSource"/> <property name="packagesToScan"> <array> <value>com.shopmvc.pojo</value> </array> </property> <property name="hibernateProperties"> <value> hibernate.dialect=org.hibernate.dialect.MySQLDialect </value> </property> </bean> <!-- Hibernate Transaction Manager --> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="mySessionFactory"/> </bean> <!-- Activates annotation based transaction management --> <tx:annotation-driven transaction-manager="transactionManager"/> org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) root cause org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82) org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) root cause com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.ID_CATALOG' in 'field list' sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) java.lang.reflect.Constructor.newInstance(Unknown Source) com.mysql.jdbc.Util.handleNewInstance(Util.java:411) com.mysql.jdbc.Util.getInstance(Util.java:386) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815) com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815) org.hibernate.loader.Loader.doQuery(Loader.java:899) org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) org.hibernate.loader.Loader.doList(Loader.java:2522) org.hibernate.loader.Loader.doList(Loader.java:2508) org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338) org.hibernate.loader.Loader.list(Loader.java:2333) org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490) CREATE TABLE `catalog` ( `ID_CATALOG` int
     NOT NULL AUTO_INCREMENT,
      `Catalog_Name` varchar

    DEFAULT NULL, PRIMARY KEY (`ID_CATALOG`) ) CREATE TABLE `product` ( `id_product` int
     NOT NULL AUTO_INCREMENT,
      `product_name` varchar

    DEFAULT NULL, `date` date DEFAULT NULL, `author` varchar DEFAULT NULL, `price` int
     DEFAULT NULL,
      `catalog_id` int
     DEFAULT NULL,
      `linkimage` varchar

    DEFAULT NULL, PRIMARY KEY (`id_product`), KEY `FK_Product_idx` (`catalog_id`), CONSTRAINT `FK_Product` FOREIGN KEY (`catalog_id`) REFERENCES `catalog` (`ID_CATALOG`) ON DELETE NO ACTION ON UPDATE NO ACTION ) Решение На Product выше, имя объединяемого столбца установлено на ID_CATALOG . @ManyToOne @JoinColumn(name="ID_CATALOG") private Catalog catalog; Однако внешний ключ на Product стол называется catalog_id `catalog_id` int
     DEFAULT NULL,
    
    
    Ответил - Уилл Килинг
    Выпуск
    
    
    У меня есть Spring Boot, связанный с приложением Oracle Database. Та же версия приложения отлично работает с MySQL, но когда я пытаюсь выполнить несколько запросов к базе данных Oracle, выдается ошибка:
    
    
    
    Итак, вот мой метод контроллера для этой функции:
    @PostMapping("/expense")
        ResponseEntity<Expense> createExpense(@Valid @RequestBody Expense expense) throws URISyntaxException {
    
            Expense result = expenseRepository.save(expense);
            return ResponseEntity.created(new URI("/api/expense/" + result.getId())).body(result);
        }
    
    
    И мои расходы
    
     модель
    @NoArgsConstructor
    @Data
    @Table(name="expense")
    @Entity
    public class Expense {
    
        @Id
        @GeneratedValue(strategy= GenerationType.AUTO)
        private Long id;
    
        private Instant date; 
    
        private double amount;
        
        private String description;
    
        @ManyToOne
        private Category category;
    
        @ManyToOne
        private User user;
    
    // Getters and setters
    
    
    Вот моё приложение.свойства
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle12cDialect
    spring.jpa.properties.hibernate.ddl-auto=create-drop
    spring.jpa.properties.hibernate.show-sql=true
    
    spring.datasource.url=jdbc:oracle:thin:@localhost:1521:XE
    spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
    spring.datasource.username=system
    spring.datasource.password=root
    spring.datasource.initialization-mode=always
    spring.datasource.validationQuery=SELECT 1
    
    logging.level.org.hibernate.SQL=DEBUG
    spring.server.compression.enabled=true
    
    spring.jpa.database-platform=org.hibernate.dialect.Oracle12cDialect
    
    spring.jpa.properties.hibernate.format_sql=true
    
    
    
    Раствор
    
    
    Вам следует добавить Hibernate Dialect
    
     в ваше приложение.свойства
    
     вот так
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
    spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect
    
    
    Ответил - Кирилл Гросу
    
    
    Ответ проверен - Кэндис Джонсон (волонтер JavaFixing)
    
    
    Я реализовал простое приложение в Hibernate-4. Это приложение извлекает значение из таблицы. Но когда я пытаюсь получить пластинку с этим
    (Booking) session.get(Booking.class, 3740456);
    
    
    это исключение
    INFO: HHH000327: Error performing load command : org.hibernate.exception.SQLGrammarException: could not extract ResultSet
    
    
    Итак, чтобы проверить в базе данных имя таблицы и столбца, я копирую запрос из оператора журнала и выполняю его. Это дает мне правильный результат.
    
    
    Я проверил несколько вопросов и ответов, связанных с этим вопросом, но смог найти решение.
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    
    <hibernate-configuration>
        <session-factory>
    
            <property name="connection.url">jdbc:oracle:thin:@SHKG9072DB:5030:TMSD10G2</property>
            <property name="connection.username">ICTDEV$EDI_APP</property>
            <property name="connection.password">p2II9JLIaea06</property>
            <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
            <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
    
            <property name="show_sql">true</property>
    
            <property name="format_sql">true</property>
    
            <property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
            <property name = "hibernate.jdbc.lob.non_contextual_creation">true</property>  
    
    
            <property name="connection.pool_size">1</property>
            <property name="current_session_context_class">thread</property>
    
            <mapping class="com.hibernate.demo.Booking"/> 
    
        </session-factory>
    </hibernate-configuration>
    package com.hibernate.demo;
    
    import java.io.Serializable;
    
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.Table;
    
    
    @Entity
    @Table(name="EDI_IN_BOOKING")
    public class Booking {
    
        /**
        * 
        */
        private static final long serialVersionUID = 1L;
    
        @Id 
        private int id;
    
        @Column(name="SITE_AN")
        private String site;
    
    
        @Column(name="EVENT_ID")
        private int eventId;
    
        @Column(name="EVENT_DETAIL_ID")
        private int eventDetailId;
    
        @Column(name="RECORD_SEQUENCE_ID")
        private int recordSequenceId;
    
        @Column(name="RECORD_TYPE_N")
        int recordType; 
    
        @Column(name="EDI_SENDER_AN")
        String sender;
    
        @Column(name="EDI_RECIPIENT_AN")
        String recipient;
    
        @Column(name="PARTNER_C")
        String partner;
    
        @Column(name="SENDER_SEQUENCE_AN")
        String senderSequence;
    
    
    
    
        public String getSite() {
            return site;
        }
    
        public void setSite(String site) {
            this.site = (site);
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = (id);
        }
    
        public int getEventId() {
            return eventId;
        }
    
        public void setEventId(int eventId) {
            this.eventId = (eventId);
        }
    
        public int getEventDetailId() {
            return eventDetailId;
        }
    
        public void setEventDetailId(int eventDetailId) {
            this.eventDetailId = (eventDetailId);
        }
    
        public int getRecordSequenceId() {
            return recordSequenceId;
        }
    
        public void setRecordSequenceId(int recordSequenceId) {
            this.recordSequenceId = (recordSequenceId);
        }
    
        public int getRecordType() {
            return recordType;
        }
    
        public void setRecordType(int recordType) {
            this.recordType = (recordType);
        }
    
        public String getSender() {
            return sender;
        }
    
        public void setSender(String sender) {
            this.sender = (sender);
        }
    
        public String getRecipient() {
            return recipient;
        }
    
        public void setRecipient(String recipient) {
            this.recipient = (recipient);
        }
    
        public String getPartner() {
            return partner;
        }
    
        public void setPartner(String partner) {
            this.partner = (partner);
        }
    
        public String getSenderSequence() {
            return senderSequence;
        }
    
        public void setSenderSequence(String senderSequence) {
            this.senderSequence = (senderSequence);
        }
    
    
    
    }
    package com.hibernate.demo;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.service.ServiceRegistry;
    
    public class Main {
    
        public static void main(String[] args) {
            System.out.println("Hello World");
            System.out.println("Trying to create a test connection with the database.");
            Configuration configuration = new Configuration().configure("hibernate.cfg.xml");
            StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder();
            serviceRegistryBuilder.applySettings(configuration.getProperties());
            ServiceRegistry serviceRegistry = serviceRegistryBuilder.build();
            SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
    
            Session session = sessionFactory.getCurrentSession(); 
    
            session.beginTransaction();
            Booking booking = (Booking) session.get(Booking.class, 3740456);        
            System.out.println(booking.getEventDetailId());
        }
    
    }
    desc EDi_IN_BOOKING
    ID                             NOT NULL NUMBER                                                                                                                                                                                        
    EVENT_ID                       NOT NULL NUMBER                                                                                                                                                                                        
    EVENT_DETAIL_ID                NOT NULL NUMBER                                                                                                                                                                                        
    RECORD_SEQUENCE_ID             NOT NULL NUMBER                                                                                                                                                                                        
    RECORD_TYPE_N                           NUMBER

    SITE_AN VARCHAR2select name from customer; EDI_SENDER_AN VARCHAR2EDI_RECIPIENT_AN VARCHAR2PARTNER_C VARCHAR2 SENDER_SEQUENCE_AN VARCHAR2
    Запрос из журнала (это дает правильный результат) select booking0_.id as id1_0_0_, booking0_.EVENT_DETAIL_ID as EVENT_DETAIL_ID2_0_0_, booking0_.EVENT_ID as EVENT_ID3_0_0_, booking0_.PARTNER_C as PARTNER_C4_0_0_, booking0_.EDI_RECIPIENT_AN as EDI_RECIPIENT_AN5_0_0_, booking0_.RECORD_SEQUENCE_ID as RECORD_SEQUENCE_ID6_0_0_, booking0_.RECORD_TYPE_N as RECORD_TYPE_N7_0_0_, booking0_.EDI_SENDER_AN as EDI_SENDER_AN8_0_0_, booking0_.SENDER_SEQUENCE_AN as SENDER_SEQUENCE_AN9_0_0_, booking0_.site_an as site_an10_0_0_ from EDI_IN_BOOKING booking0_ where booking0_.id=3740456; INFO: HHH000397: Using ASTQueryTranslatorFactory Hibernate: select booking0_.id as id1_0_0_, booking0_.EVENT_DETAIL_ID as EVENT_DETAIL_ID2_0_0_, booking0_.EVENT_ID as EVENT_ID3_0_0_, booking0_.PARTNER_C as PARTNER_C4_0_0_, booking0_.EDI_RECIPIENT_AN as EDI_RECIPIENT_AN5_0_0_, booking0_.RECORD_SEQUENCE_ID as RECORD_SEQUENCE_ID6_0_0_, booking0_.RECORD_TYPE_N as RECORD_TYPE_N7_0_0_, booking0_.EDI_SENDER_AN as EDI_SENDER_AN8_0_0_, booking0_.SENDER_SEQUENCE_AN as SENDER_SEQUENCE_AN9_0_0_, booking0_.site_an as site_an10_0_0_ from EDI_IN_BOOKING booking0_ where booking0_.id=? May 22, 2015 10:49:43 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions WARN: SQL Error: 904, SQLState: 42000 May 22, 2015 10:49:43 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions ERROR: ORA-00904: "BOOKING0_"."SITE_AN": invalid identifier May 22, 2015 10:49:43 AM org.hibernate.event.internal.DefaultLoadEventListener onLoad INFO: HHH000327: Error performing load command : org.hibernate.exception.SQLGrammarException: could not extract ResultSet Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not extract ResultSet at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:123) 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.plan.exec.internal.AbstractLoadPlanBasedLoader.getResultSet(AbstractLoadPlanBasedLoader.java:449) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeQueryStatement(AbstractLoadPlanBasedLoader.java:202) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:137) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:102) at org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.load(AbstractLoadPlanBasedEntityLoader.java:186) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:4126) at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:503) at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:468) at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:213) at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:275) at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:151) at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1106) at org.hibernate.internal.SessionImpl.access00(SessionImpl.java:176) at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2587) at org.hibernate.internal.SessionImpl.get(SessionImpl.java:991) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:356) at $Proxy7.get(Unknown Source) at com.dpworld.demo.Main.main(Main.java:23) Caused by: java.sql.SQLException: ORA-00904: "BOOKING0_"."SITE_AN": invalid identifier at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289) at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:589) at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1957) at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(TTC7Protocol.java:850) at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2555) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2896) at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:644) at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:570) at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:82) ... 22 more 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.hql.QueryLoader.list(QueryLoader.java:497) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:387) at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:236) at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1300) at org.hibernate.internal.QueryImpl.list(QueryImpl.java:103) at com.icss.framework.service.BaseService.queryByHql(BaseService.java:746) at com.icss.aqxxzy.service.SearchService.search147Info(SearchService.java:359) at com.icss.aqxxzy.controller.SearchController.search147(SearchController.java:149) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at com.icss.resourceone.sdk.SdkFilter.doFilter(SdkFilter.java:166) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:662) Caused by: java.sql.SQLSyntaxErrorException: ORA-00942: Table or view does not exist 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.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:82) ... 58 more Подробности об ошибке: набор результатов не может быть инициализирован, поскольку таблица или представление не существует 1. Класс сущности Java не соответствует типу данных поля базы данных, нет проблем 2. Если имя таблицы отличается от имени в базе данных, добавьте имя таблицы еще раз 3. Значение имени, соответствующее столбцу, не соответствует регистру поля базы данных 4. Файл конфигурации неправильно подключен к базе данных Вышеуказанные распространенные причины ошибок исключены, проблем нет Причина ошибки: база данных, по которой построена таблица, отличается от базы данных, к которой подключен файл конфигурации, и не проверен тщательно адрес базы данных, по которой построена таблица Воспроизведено: https://www.cnblogs.com/baijingting/p/9711813.html Подробнее:
  • Решение – 1
  • Решение – 2
  • Решение – 3
  • Решение – 4
  • Решение – 5
  • Решение – 6
  • Решение – 7
  • Решение – 8
  • Решение – 9
  • Раствор – 10
  • Решение – 11
  • Решение – 12
  • Решение – 13
  • Решение – 14
  • Решение – 15
  • Выпуск
  • Решение
  • Выпуск
  • Раствор
  • EDI_RECIPIENT_AN VARCHAR2PARTNER_C VARCHAR2 SENDER_SEQUENCE_AN VARCHAR2
  • Запрос из журнала (это дает правильный результат) select booking0_.id as id1_0_0_, booking0_.EVENT_DETAIL_ID as EVENT_DETAIL_ID2_0_0_, booking0_.EVENT_ID as EVENT_ID3_0_0_, booking0_.PARTNER_C as PARTNER_C4_0_0_, booking0_.EDI_RECIPIENT_AN as EDI_RECIPIENT_AN5_0_0_, booking0_.RECORD_SEQUENCE_ID as RECORD_SEQUENCE_ID6_0_0_, booking0_.RECORD_TYPE_N as RECORD_TYPE_N7_0_0_, booking0_.EDI_SENDER_AN as EDI_SENDER_AN8_0_0_, booking0_.SENDER_SEQUENCE_AN as SENDER_SEQUENCE_AN9_0_0_, booking0_.site_an as site_an10_0_0_ from EDI_IN_BOOKING booking0_ where booking0_.id=3740456; INFO: HHH000397: Using ASTQueryTranslatorFactory Hibernate: select booking0_.id as id1_0_0_, booking0_.EVENT_DETAIL_ID as EVENT_DETAIL_ID2_0_0_, booking0_.EVENT_ID as EVENT_ID3_0_0_, booking0_.PARTNER_C as PARTNER_C4_0_0_, booking0_.EDI_RECIPIENT_AN as EDI_RECIPIENT_AN5_0_0_, booking0_.RECORD_SEQUENCE_ID as RECORD_SEQUENCE_ID6_0_0_, booking0_.RECORD_TYPE_N as RECORD_TYPE_N7_0_0_, booking0_.EDI_SENDER_AN as EDI_SENDER_AN8_0_0_, booking0_.SENDER_SEQUENCE_AN as SENDER_SEQUENCE_AN9_0_0_, booking0_.site_an as site_an10_0_0_ from EDI_IN_BOOKING booking0_ where booking0_.id=? May 22, 2015 10:49:43 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions WARN: SQL Error: 904, SQLState: 42000 May 22, 2015 10:49:43 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions ERROR: ORA-00904: "BOOKING0_"."SITE_AN": invalid identifier May 22, 2015 10:49:43 AM org.hibernate.event.internal.DefaultLoadEventListener onLoad INFO: HHH000327: Error performing load command : org.hibernate.exception.SQLGrammarException: could not extract ResultSet Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not extract ResultSet at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:123) 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.plan.exec.internal.AbstractLoadPlanBasedLoader.getResultSet(AbstractLoadPlanBasedLoader.java:449) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeQueryStatement(AbstractLoadPlanBasedLoader.java:202) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:137) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:102) at org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.load(AbstractLoadPlanBasedEntityLoader.java:186) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:4126) at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:503) at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:468) at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:213) at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:275) at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:151) at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1106) at org.hibernate.internal.SessionImpl.access00(SessionImpl.java:176) at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2587) at org.hibernate.internal.SessionImpl.get(SessionImpl.java:991) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:356) at $Proxy7.get(Unknown Source) at com.dpworld.demo.Main.main(Main.java:23) Caused by: java.sql.SQLException: ORA-00904: "BOOKING0_"."SITE_AN": invalid identifier at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289) at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:589) at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1957) at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(TTC7Protocol.java:850) at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2555) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2896) at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:644) at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:570) at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:82) ... 22 more 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.hql.QueryLoader.list(QueryLoader.java:497) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:387) at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:236) at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1300) at org.hibernate.internal.QueryImpl.list(QueryImpl.java:103) at com.icss.framework.service.BaseService.queryByHql(BaseService.java:746) at com.icss.aqxxzy.service.SearchService.search147Info(SearchService.java:359) at com.icss.aqxxzy.controller.SearchController.search147(SearchController.java:149) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at com.icss.resourceone.sdk.SdkFilter.doFilter(SdkFilter.java:166) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:662) Caused by: java.sql.SQLSyntaxErrorException: ORA-00942: Table or view does not exist 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.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:82) ... 58 more Подробности об ошибке: набор результатов не может быть инициализирован, поскольку таблица или представление не существует 1. Класс сущности Java не соответствует типу данных поля базы данных, нет проблем 2. Если имя таблицы отличается от имени в базе данных, добавьте имя таблицы еще раз 3. Значение имени, соответствующее столбцу, не соответствует регистру поля базы данных 4. Файл конфигурации неправильно подключен к базе данных Вышеуказанные распространенные причины ошибок исключены, проблем нет Причина ошибки: база данных, по которой построена таблица, отличается от базы данных, к которой подключен файл конфигурации, и не проверен тщательно адрес базы данных, по которой построена таблица Воспроизведено: https://www.cnblogs.com/baijingting/p/9711813.html Подробнее:
  • PARTNER_C VARCHAR2 SENDER_SEQUENCE_AN VARCHAR2
  • Запрос из журнала (это дает правильный результат) select booking0_.id as id1_0_0_, booking0_.EVENT_DETAIL_ID as EVENT_DETAIL_ID2_0_0_, booking0_.EVENT_ID as EVENT_ID3_0_0_, booking0_.PARTNER_C as PARTNER_C4_0_0_, booking0_.EDI_RECIPIENT_AN as EDI_RECIPIENT_AN5_0_0_, booking0_.RECORD_SEQUENCE_ID as RECORD_SEQUENCE_ID6_0_0_, booking0_.RECORD_TYPE_N as RECORD_TYPE_N7_0_0_, booking0_.EDI_SENDER_AN as EDI_SENDER_AN8_0_0_, booking0_.SENDER_SEQUENCE_AN as SENDER_SEQUENCE_AN9_0_0_, booking0_.site_an as site_an10_0_0_ from EDI_IN_BOOKING booking0_ where booking0_.id=3740456; INFO: HHH000397: Using ASTQueryTranslatorFactory Hibernate: select booking0_.id as id1_0_0_, booking0_.EVENT_DETAIL_ID as EVENT_DETAIL_ID2_0_0_, booking0_.EVENT_ID as EVENT_ID3_0_0_, booking0_.PARTNER_C as PARTNER_C4_0_0_, booking0_.EDI_RECIPIENT_AN as EDI_RECIPIENT_AN5_0_0_, booking0_.RECORD_SEQUENCE_ID as RECORD_SEQUENCE_ID6_0_0_, booking0_.RECORD_TYPE_N as RECORD_TYPE_N7_0_0_, booking0_.EDI_SENDER_AN as EDI_SENDER_AN8_0_0_, booking0_.SENDER_SEQUENCE_AN as SENDER_SEQUENCE_AN9_0_0_, booking0_.site_an as site_an10_0_0_ from EDI_IN_BOOKING booking0_ where booking0_.id=? May 22, 2015 10:49:43 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions WARN: SQL Error: 904, SQLState: 42000 May 22, 2015 10:49:43 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions ERROR: ORA-00904: "BOOKING0_"."SITE_AN": invalid identifier May 22, 2015 10:49:43 AM org.hibernate.event.internal.DefaultLoadEventListener onLoad INFO: HHH000327: Error performing load command : org.hibernate.exception.SQLGrammarException: could not extract ResultSet Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not extract ResultSet at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:123) 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.plan.exec.internal.AbstractLoadPlanBasedLoader.getResultSet(AbstractLoadPlanBasedLoader.java:449) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeQueryStatement(AbstractLoadPlanBasedLoader.java:202) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:137) at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:102) at org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.load(AbstractLoadPlanBasedEntityLoader.java:186) at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:4126) at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:503) at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:468) at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:213) at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:275) at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:151) at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1106) at org.hibernate.internal.SessionImpl.access00(SessionImpl.java:176) at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2587) at org.hibernate.internal.SessionImpl.get(SessionImpl.java:991) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:356) at $Proxy7.get(Unknown Source) at com.dpworld.demo.Main.main(Main.java:23) Caused by: java.sql.SQLException: ORA-00904: "BOOKING0_"."SITE_AN": invalid identifier at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289) at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:589) at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1957) at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(TTC7Protocol.java:850) at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2555) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2896) at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:644) at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:570) at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:82) ... 22 more 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.hql.QueryLoader.list(QueryLoader.java:497) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:387) at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:236) at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1300) at org.hibernate.internal.QueryImpl.list(QueryImpl.java:103) at com.icss.framework.service.BaseService.queryByHql(BaseService.java:746) at com.icss.aqxxzy.service.SearchService.search147Info(SearchService.java:359) at com.icss.aqxxzy.controller.SearchController.search147(SearchController.java:149) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872) at javax.servlet.http.HttpServlet.service(HttpServlet.java:650) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at com.icss.resourceone.sdk.SdkFilter.doFilter(SdkFilter.java:166) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:662) Caused by: java.sql.SQLSyntaxErrorException: ORA-00942: Table or view does not exist 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.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:82) ... 58 more Подробности об ошибке: набор результатов не может быть инициализирован, поскольку таблица или представление не существует 1. Класс сущности Java не соответствует типу данных поля базы данных, нет проблем 2. Если имя таблицы отличается от имени в базе данных, добавьте имя таблицы еще раз 3. Значение имени, соответствующее столбцу, не соответствует регистру поля базы данных 4. Файл конфигурации неправильно подключен к базе данных Вышеуказанные распространенные причины ошибок исключены, проблем нет Причина ошибки: база данных, по которой построена таблица, отличается от базы данных, к которой подключен файл конфигурации, и не проверен тщательно адрес базы данных, по которой построена таблица Воспроизведено: https://www.cnblogs.com/baijingting/p/9711813.html Подробнее:
  • Подробнее:
  • DEFAULT NULL, PRIMARY KEY (`ID_CATALOG`) ) CREATE TABLE `product` ( `id_product` intorg.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) root cause org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82) org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) root cause com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.ID_CATALOG' in 'field list' sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) java.lang.reflect.Constructor.newInstance(Unknown Source) com.mysql.jdbc.Util.handleNewInstance(Util.java:411) com.mysql.jdbc.Util.getInstance(Util.java:386) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815) com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815) org.hibernate.loader.Loader.doQuery(Loader.java:899) org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) org.hibernate.loader.Loader.doList(Loader.java:2522) org.hibernate.loader.Loader.doList(Loader.java:2508) org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338) org.hibernate.loader.Loader.list(Loader.java:2333) org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490) NOT NULL AUTO_INCREMENT, `product_name` varchar

    DEFAULT NULL, `date` date DEFAULT NULL, `author` varchar

    DEFAULT NULL, `price` intorg.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) root cause org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82) org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) root cause com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.ID_CATALOG' in 'field list' sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) java.lang.reflect.Constructor.newInstance(Unknown Source) com.mysql.jdbc.Util.handleNewInstance(Util.java:411) com.mysql.jdbc.Util.getInstance(Util.java:386) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815) com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815) org.hibernate.loader.Loader.doQuery(Loader.java:899) org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) org.hibernate.loader.Loader.doList(Loader.java:2522) org.hibernate.loader.Loader.doList(Loader.java:2508) org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338) org.hibernate.loader.Loader.list(Loader.java:2333) org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490) DEFAULT NULL, `catalog_id` intorg.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) root cause org.hibernate.exception.SQLGrammarException: could not extract ResultSet org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82) org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125) org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) root cause com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.ID_CATALOG' in 'field list' sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) java.lang.reflect.Constructor.newInstance(Unknown Source) com.mysql.jdbc.Util.handleNewInstance(Util.java:411) com.mysql.jdbc.Util.getInstance(Util.java:386) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815) com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155) com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56) org.hibernate.loader.Loader.getResultSet(Loader.java:2036) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836) org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815) org.hibernate.loader.Loader.doQuery(Loader.java:899) org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341) org.hibernate.loader.Loader.doList(Loader.java:2522) org.hibernate.loader.Loader.doList(Loader.java:2508) org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338) org.hibernate.loader.Loader.list(Loader.java:2333) org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490) DEFAULT NULL, `linkimage` varchar

    DEFAULT NULL, PRIMARY KEY (`id_product`), KEY `FK_Product_idx` (`catalog_id`), CONSTRAINT `FK_Product` FOREIGN KEY (`catalog_id`) REFERENCES `catalog` (`ID_CATALOG`) ON DELETE NO ACTION ON UPDATE NO ACTION )

    Решение – 1

    Попробуйте использовать внутреннее соединение в своем запросе

         Query query=session.createQuery("from Product as p INNER JOIN p.catalog as c 
        WHERE c.idCatalog= :id and p.productName like :XXX");
        query.setParameter("id", 7);
        query.setParameter("xxx", "%"+abc+"%");
        List list = query.list();
    
      

    также в файле конфигурации спящего режима есть

     <!--hibernate.cfg.xml -->
    <property name="show_sql">true</property>
    
      

    Для отображения на консоли того, что запрашивается.

    Решение – 2

    На Product
    выше, имя объединяемого столбца установлено на ID_CATALOG
    .

     @ManyToOne
    @JoinColumn(name="ID_CATALOG")
    private Catalog catalog;
    
      

    Однако внешний ключ на Product
    стол называется catalog_id

     `catalog_id` intorg.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet
        org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948)
        org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
        org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    
    root cause 
    
    org.hibernate.exception.SQLGrammarException: could not extract ResultSet
        org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82)
        org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
        org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
        org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
        org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61)
        org.hibernate.loader.Loader.getResultSet(Loader.java:2036)
    
    root cause 
    
    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.ID_CATALOG' in 'field list'
        sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        java.lang.reflect.Constructor.newInstance(Unknown Source)
        com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        com.mysql.jdbc.Util.getInstance(Util.java:386)
        com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054)
        com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187)
        com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119)
        com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570)
        com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)
        com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815)
        com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
        com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322)
        org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
        org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
        org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56)
        org.hibernate.loader.Loader.getResultSet(Loader.java:2036)
        org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836)
        org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815)
        org.hibernate.loader.Loader.doQuery(Loader.java:899)
        org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341)
        org.hibernate.loader.Loader.doList(Loader.java:2522)
        org.hibernate.loader.Loader.doList(Loader.java:2508)
        org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338)
        org.hibernate.loader.Loader.list(Loader.java:2333)
        org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490)
     DEFAULT NULL,
    
      

    Решение – 3

    У меня была похожая проблема. Попробуйте использовать редактор HQL. Он отобразит вам SQL (поскольку у вас есть исключение из грамматики SQL). Скопируйте свой SQL и выполните его отдельно. В моем случае проблема была в определении схемы. Я определил схему, но мне следует оставить ее пустой. Это вызвало то же исключение, что и вы. А описание ошибки отражало фактическое состояние, поскольку имя схемы было включено в оператор SQL.

    Решение – 4

    Другая потенциальная причина, по которой другие люди сталкиваются с тем же сообщением об ошибке, заключается в том, что эта ошибка возникнет, если вы обращаетесь к таблице в схеме, отличной от той, с которой вы прошли аутентификацию.

    В этом случае вам нужно будет добавить имя схемы в запись вашего объекта:

     @Table(name= "catalog", schema = "targetSchemaName")
    
      

    Решение – 5

    Если у вас нет последовательности «HIBERNATE_SEQUENCE», созданной в базе данных (если вы используете oracle или любую базу данных на основе последовательностей), вы получите тот же тип ошибки;

    Убедитесь, что последовательность присутствует;

    Решение – 6

    Я столкнулся с той же проблемой после переноса базы данных с онлайн-сервера на локальный хост. Схема изменилась, поэтому мне пришлось определять ее вручную для каждой таблицы:

     @Entity
    @Table(name = "ESBCORE_DOMAIN", schema = "SYS")
    
      

    Решение – 7

     @OneToMany(mappedBy="catalog", fetch = FetchType.LAZY)
    @JsonIgnore
    private Set<Product> products = new HashSet<Product>(0);
    
      

    Решение – 8

     spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
    
      
     spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
    
      

    ранее получала ошибку

     There was an unexpected error (type=Internal Server Error, status=500).
    could not extract ResultSet; SQL [n/a]; nested exception is 
    org.hibernate.exception.SQLGrammarException: could not extract ResultSet
    org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:280)
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:254)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:528)
    at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)
    at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242)
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:153)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    
      

    Решение – 9

    У меня была такая же проблема, когда я пытался обновить строку:

     @Query(value = "UPDATE data SET value = 'asdf'", nativeQuery = true)
    void setValue();
    
      
     @Modifying    
    @Query(value = "UPDATE data SET value = 'asdf'", nativeQuery = true)
    void setValue();
    
      

    Раствор – 10

    Я использовал Spring Data JPA с PostgreSql, и во время вызова UPDATE показывались ошибки —

    • не удалось извлечь ResultSet
      ‘ и еще один.
    • org.springframework.dao. InvalidDataAccessApiUsageException: выполнение

      запрос на обновление/удаление; вложенное исключение

      javax.persistence. TransactionRequiredException: выполнение

      обновить/удалить запрос. ( Требуется отображение транзакций.
      )

    Вообще-то меня не было
    две обязательные аннотации.

    • @Transactional и
    • @Модификация
     @Query(vlaue = " UPDATE DB.TABLE SET Col1 = ?1 WHERE id = ?2 ", nativeQuery = true)
    void updateCol1(String value, long id);
    
      

    Решение – 11

    Для MySql
    учтите, что не стоит писать верблюжий регистр
    .

    Например, если схема такая:

     CREATE TABLE IF NOT EXISTS `task`(
        `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
        `teaching_hours` DECIMAL(5,2) DEFAULT NULL,
        `isActive` BOOLEAN DEFAULT FALSE,
        `is_validated` BOOLEAN DEFAULT FALSE,
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    
      

    Вы должны быть очень осторожны, потому что isActive
    столбец будет преобразован в isactive
    .

    Итак, в вашем классе Entity должно быть так:

      @Basic
     @Column(name = "isactive", nullable = true)
     public boolean isActive() {
         return isActive;
     }
     public void setActive(boolean active) {
         isActive = active;
     }
    
      

    По крайней мере, это была моя проблема, из-за которой я получил вашу ошибку

    Решение – 12

    Это сообщение также появляется, если вы по ошибке используете зарезервированное ключевое слово для своей таблицы ( https://dev.mysql.com/doc/refman/8.0/en/keywords.html#keywords-8- 0-подробно-C
    ). При объединении таблицы, имя которой совпадает с зарезервированным ключевым словом mysql, вы получите то же сообщение, хотя все остальное правильно.

    Надеюсь, это сэкономит время и боль другим людям.

    Решение – 13

    Я воспроизвел похожую проблему:

     Caused by: org.springframework.dao.InvalidDataAccessResourceUsageException: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet
        at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:279)
        at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:253)
        at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:527)
        at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)
        at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242)
    
    ...
    
    Caused by: java.sql.SQLSyntaxErrorException: Unknown column 'setting0_.advance_payment_first_text' in 'field list'
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
        at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
        at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:975)
        
    
      

    И в моем конкретном случае это произошло из-за конфликта между новым дампом, который использовался для базы данных, и liquibase
    файлы конфигурации data.xml
    с логикой типа:

     <changeSet  author="liquibase-docs"  id="sqlFile-data">
            <sqlFile  dbms="!h2, oracle, mysql"
                      encoding="UTF-8"
                      path="......sqldata.sql"
                      relativeToChangelogFile="true"
                      splitStatements="true"
                      stripComments="true"/>
    </changeSet>
    
      
     <changeSet  author="liquibase-docs"  id="sqlFile-structure">
            <sqlFile  dbms="!h2, oracle, mysql"
                      encoding="UTF-8"
                      path="......sqlstructure.sql"
                      relativeToChangelogFile="true"
                      splitStatements="true"
                      stripComments="true"/>
    </changeSet>
    
      

    для старых скриптов проекта.

    После некоторых исследований, проверив соответствие таблиц столбцам в коде, я понял, что эти старые скрипты перезаписываются после запуска нового дампа проекта.

    Итак после удаления старых скриптов data.sql
    и structure.sql
    с файлами конфигурации data.xml
    и structure.xml
    из проекта эта проблема была решена.

    Решение – 14

    в моем случае я изменил свойство ddl на create-drop и запустил его после удаления таблиц.

    просто ставим ddl на создание, и после этого возвращаемся в none (чтобы больше не менять базу)

    Решение – 15

    Для меня проблема заключалась в первую очередь в различиях в верхнем и нижнем регистре между моим локальным рабочим пространством и именем таблицы сервера базы данных разработки.

     select name from customer;
    
      
     select name from Customer;
    
      

    Исправив опечатку, ошибка исчезла.

    Надеюсь, для кого-то это станет решением.

    Выпуск

    Мой пример кода здесь

     @Entity
    @Table(name = "catalog")
    public class Catalog implements Serializable {
    
    @Id
    @Column(name="ID_CATALOG")
    @GeneratedValue 
    private Integer idCatalog;
    
    @Column(name="Catalog_Name")
    private String catalogName;
    
    @OneToMany(mappedBy="catalog", fetch = FetchType.LAZY)
    private Set<Product> products = new HashSet<Product>(0);
    
    //getter & setter & constructor
    //...
    }
    
    
    @Entity
    @Table(name = "product")
    public class Product implements Serializable {
    
    @Id
    @Column(name="id_product")
    @GeneratedValue 
    private Integer idProduct;
    
    @ManyToOne
    @JoinColumn(name="ID_CATALOG")
    private Catalog catalog;
    
    @Column(name="product_name")
    private String productName;
    
    @Column(name="date")
    private Date date;
    
    @Column(name="author")
    private String author;
    
    @Column(name="price")
    private Integer price;
    
    @Column(name="linkimage")
    private String linkimage;
    
    //getter & setter & constructor
    }
    
    
    
    @Repository
    @SuppressWarnings({"unchecked", "rawtypes"})
    public class ProductDAOImpl implements ProductDAO {
        @Autowired
        private SessionFactory sessionFactory;
    public List<Product> searchProductByCatalog(String catalogid, String keyword) {
        String sql = "select p from Product p where 1 = 1";
        Session session = sessionFactory.getCurrentSession();
    
        if (keyword.trim().equals("") == false) {
            sql += " and p.productName like '%" + keyword + "%'";
        }
        if (catalogid.trim().equals("-1") == false
                && catalogid.trim().equals("") == false) {
            sql += " and p.catalog.idCatalog = " + Integer.parseInt(catalogid);
        }
        Query query = session.createQuery(sql);
        List listProduct = query.list();
        return listProduct;
    }
    
    }
    
      
       <!-- Scan classpath for annotations (eg: @Service, @Repository etc) -->
      <context:component-scan base-package="com.shopmvc"/>
    
      <!-- JDBC Data Source. It is assumed you have MySQL running on localhost port 3306 with 
           username root and blank password. Change below if it's not the case -->
      <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/shoesshopdb?autoReconnect=true"/>
        <property name="username" value="root"/>
        <property name="password" value="12345"/>
        <property name="validationQuery" value="SELECT 1"/>
      </bean>
    
      <!-- Hibernate Session Factory -->
      <bean id="mySessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="myDataSource"/>
        <property name="packagesToScan">
          <array>
            <value>com.shopmvc.pojo</value>
          </array>
        </property>
        <property name="hibernateProperties">
          <value>
            hibernate.dialect=org.hibernate.dialect.MySQLDialect
          </value>
        </property>
      </bean>
    
      <!-- Hibernate Transaction Manager -->
      <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="mySessionFactory"/>
      </bean>
    
      <!-- Activates annotation based transaction management -->
      <tx:annotation-driven transaction-manager="transactionManager"/>
    
      
     org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet
        org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:948)
        org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
        org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    
    root cause 
    
    org.hibernate.exception.SQLGrammarException: could not extract ResultSet
        org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82)
        org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
        org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
        org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
        org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:61)
        org.hibernate.loader.Loader.getResultSet(Loader.java:2036)
    
    root cause 
    
    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'product0_.ID_CATALOG' in 'field list'
        sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        java.lang.reflect.Constructor.newInstance(Unknown Source)
        com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
        com.mysql.jdbc.Util.getInstance(Util.java:386)
        com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054)
        com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4187)
        com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4119)
        com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570)
        com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)
        com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2815)
        com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
        com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2322)
        org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
        org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
        org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:56)
        org.hibernate.loader.Loader.getResultSet(Loader.java:2036)
        org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836)
        org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1815)
        org.hibernate.loader.Loader.doQuery(Loader.java:899)
        org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341)
        org.hibernate.loader.Loader.doList(Loader.java:2522)
        org.hibernate.loader.Loader.doList(Loader.java:2508)
        org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2338)
        org.hibernate.loader.Loader.list(Loader.java:2333)
        org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490)
    
      
     CREATE TABLE `catalog` (
      `ID_CATALOG` int
     NOT NULL AUTO_INCREMENT,
      `Catalog_Name` varchar

    DEFAULT NULL, PRIMARY KEY (`ID_CATALOG`) ) CREATE TABLE `product` ( `id_product` int
     NOT NULL AUTO_INCREMENT,
      `product_name` varchar

    DEFAULT NULL, `date` date DEFAULT NULL, `author` varchar DEFAULT NULL, `price` int
     DEFAULT NULL,
      `catalog_id` int
     DEFAULT NULL,
      `linkimage` varchar

    DEFAULT NULL, PRIMARY KEY (`id_product`), KEY `FK_Product_idx` (`catalog_id`), CONSTRAINT `FK_Product` FOREIGN KEY (`catalog_id`) REFERENCES `catalog` (`ID_CATALOG`) ON DELETE NO ACTION ON UPDATE NO ACTION )

    Решение

    На Product
    выше, имя объединяемого столбца установлено на ID_CATALOG
    .

     @ManyToOne
    @JoinColumn(name="ID_CATALOG")
    private Catalog catalog;
    
      

    Однако внешний ключ на Product
    стол называется catalog_id

     `catalog_id` int
     DEFAULT NULL,
    
      

    Ответил - Уилл Килинг

    Выпуск

    У меня есть Spring Boot, связанный с приложением Oracle Database. Та же версия приложения отлично работает с MySQL, но когда я пытаюсь выполнить несколько запросов к базе данных Oracle, выдается ошибка:

    Итак, вот мой метод контроллера для этой функции:

         @PostMapping("/expense")
        ResponseEntity<Expense> createExpense(@Valid @RequestBody Expense expense) throws URISyntaxException {
    
            Expense result = expenseRepository.save(expense);
            return ResponseEntity.created(new URI("/api/expense/" + result.getId())).body(result);
        }
    
      

    И мои расходы
    модель

     @NoArgsConstructor
    @Data
    @Table(name="expense")
    @Entity
    public class Expense {
    
        @Id
        @GeneratedValue(strategy= GenerationType.AUTO)
        private Long id;
    
        private Instant date; 
    
        private double amount;
        
        private String description;
    
        @ManyToOne
        private Category category;
    
        @ManyToOne
        private User user;
    
    // Getters and setters
    
      

    Вот моё приложение.свойства

     spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle12cDialect
    spring.jpa.properties.hibernate.ddl-auto=create-drop
    spring.jpa.properties.hibernate.show-sql=true
    
    spring.datasource.url=jdbc:oracle:thin:@localhost:1521:XE
    spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
    spring.datasource.username=system
    spring.datasource.password=root
    spring.datasource.initialization-mode=always
    spring.datasource.validationQuery=SELECT 1
    
    logging.level.org.hibernate.SQL=DEBUG
    spring.server.compression.enabled=true
    
    spring.jpa.database-platform=org.hibernate.dialect.Oracle12cDialect
    
    spring.jpa.properties.hibernate.format_sql=true
    
      

    Раствор

    Вам следует добавить Hibernate Dialect
    в ваше приложение.свойства

    вот так

     spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
    spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect
      

    Ответил - Кирилл Гросу

    Ответ проверен - Кэндис Джонсон (волонтер JavaFixing)

    Я реализовал простое приложение в Hibernate-4. Это приложение извлекает значение из таблицы. Но когда я пытаюсь получить пластинку с этим

     (Booking) session.get(Booking.class, 3740456);
    
      

    это исключение

     INFO: HHH000327: Error performing load command : org.hibernate.exception.SQLGrammarException: could not extract ResultSet
    
      

    Итак, чтобы проверить в базе данных имя таблицы и столбца, я копирую запрос из оператора журнала и выполняю его. Это дает мне правильный результат.

    Я проверил несколько вопросов и ответов, связанных с этим вопросом, но смог найти решение.

     <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    
    <hibernate-configuration>
        <session-factory>
    
            <property name="connection.url">jdbc:oracle:thin:@SHKG9072DB:5030:TMSD10G2</property>
            <property name="connection.username">ICTDEV$EDI_APP</property>
            <property name="connection.password">p2II9JLIaea06</property>
            <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
            <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
    
            <property name="show_sql">true</property>
    
            <property name="format_sql">true</property>
    
            <property name="hibernate.temp.use_jdbc_metadata_defaults">false</property>
            <property name = "hibernate.jdbc.lob.non_contextual_creation">true</property>  
    
    
            <property name="connection.pool_size">1</property>
            <property name="current_session_context_class">thread</property>
    
            <mapping class="com.hibernate.demo.Booking"/> 
    
        </session-factory>
    </hibernate-configuration>
    
      
     package com.hibernate.demo;
    
    import java.io.Serializable;
    
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.Table;
    
    
    @Entity
    @Table(name="EDI_IN_BOOKING")
    public class Booking {
    
        /**
        * 
        */
        private static final long serialVersionUID = 1L;
    
        @Id 
        private int id;
    
        @Column(name="SITE_AN")
        private String site;
    
    
        @Column(name="EVENT_ID")
        private int eventId;
    
        @Column(name="EVENT_DETAIL_ID")
        private int eventDetailId;
    
        @Column(name="RECORD_SEQUENCE_ID")
        private int recordSequenceId;
    
        @Column(name="RECORD_TYPE_N")
        int recordType; 
    
        @Column(name="EDI_SENDER_AN")
        String sender;
    
        @Column(name="EDI_RECIPIENT_AN")
        String recipient;
    
        @Column(name="PARTNER_C")
        String partner;
    
        @Column(name="SENDER_SEQUENCE_AN")
        String senderSequence;
    
    
    
    
        public String getSite() {
            return site;
        }
    
        public void setSite(String site) {
            this.site = (site);
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = (id);
        }
    
        public int getEventId() {
            return eventId;
        }
    
        public void setEventId(int eventId) {
            this.eventId = (eventId);
        }
    
        public int getEventDetailId() {
            return eventDetailId;
        }
    
        public void setEventDetailId(int eventDetailId) {
            this.eventDetailId = (eventDetailId);
        }
    
        public int getRecordSequenceId() {
            return recordSequenceId;
        }
    
        public void setRecordSequenceId(int recordSequenceId) {
            this.recordSequenceId = (recordSequenceId);
        }
    
        public int getRecordType() {
            return recordType;
        }
    
        public void setRecordType(int recordType) {
            this.recordType = (recordType);
        }
    
        public String getSender() {
            return sender;
        }
    
        public void setSender(String sender) {
            this.sender = (sender);
        }
    
        public String getRecipient() {
            return recipient;
        }
    
        public void setRecipient(String recipient) {
            this.recipient = (recipient);
        }
    
        public String getPartner() {
            return partner;
        }
    
        public void setPartner(String partner) {
            this.partner = (partner);
        }
    
        public String getSenderSequence() {
            return senderSequence;
        }
    
        public void setSenderSequence(String senderSequence) {
            this.senderSequence = (senderSequence);
        }
    
    
    
    }
    
      
     package com.hibernate.demo;
    
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.service.ServiceRegistry;
    
    public class Main {
    
        public static void main(String[] args) {
            System.out.println("Hello World");
            System.out.println("Trying to create a test connection with the database.");
            Configuration configuration = new Configuration().configure("hibernate.cfg.xml");
            StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder();
            serviceRegistryBuilder.applySettings(configuration.getProperties());
            ServiceRegistry serviceRegistry = serviceRegistryBuilder.build();
            SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
    
            Session session = sessionFactory.getCurrentSession(); 
    
            session.beginTransaction();
            Booking booking = (Booking) session.get(Booking.class, 3740456);        
            System.out.println(booking.getEventDetailId());
        }
    
    }
    
      
     desc EDi_IN_BOOKING
    ID                             NOT NULL NUMBER                                                                                                                                                                                        
    EVENT_ID                       NOT NULL NUMBER                                                                                                                                                                                        
    EVENT_DETAIL_ID                NOT NULL NUMBER                                                                                                                                                                                        
    RECORD_SEQUENCE_ID             NOT NULL NUMBER                                                                                                                                                                                        
    RECORD_TYPE_N                           NUMBER

    SITE_AN VARCHAR2select name from customer; EDI_SENDER_AN VARCHAR2

    EDI_RECIPIENT_AN VARCHAR2

    PARTNER_C VARCHAR2

    SENDER_SEQUENCE_AN VARCHAR2

    Запрос из журнала (это дает правильный результат)

     select
    booking0_.id as id1_0_0_,
    booking0_.EVENT_DETAIL_ID as EVENT_DETAIL_ID2_0_0_,
    booking0_.EVENT_ID as EVENT_ID3_0_0_,
    booking0_.PARTNER_C as PARTNER_C4_0_0_,
    booking0_.EDI_RECIPIENT_AN as EDI_RECIPIENT_AN5_0_0_,
    booking0_.RECORD_SEQUENCE_ID as RECORD_SEQUENCE_ID6_0_0_,
    booking0_.RECORD_TYPE_N as RECORD_TYPE_N7_0_0_,
    booking0_.EDI_SENDER_AN as EDI_SENDER_AN8_0_0_,
    booking0_.SENDER_SEQUENCE_AN as SENDER_SEQUENCE_AN9_0_0_,
    booking0_.site_an as site_an10_0_0_ 
    from
    EDI_IN_BOOKING booking0_ 
    where
    booking0_.id=3740456;
    
      
     INFO: HHH000397: Using ASTQueryTranslatorFactory
    Hibernate: 
    select
        booking0_.id as id1_0_0_,
        booking0_.EVENT_DETAIL_ID as EVENT_DETAIL_ID2_0_0_,
        booking0_.EVENT_ID as EVENT_ID3_0_0_,
        booking0_.PARTNER_C as PARTNER_C4_0_0_,
        booking0_.EDI_RECIPIENT_AN as EDI_RECIPIENT_AN5_0_0_,
        booking0_.RECORD_SEQUENCE_ID as RECORD_SEQUENCE_ID6_0_0_,
        booking0_.RECORD_TYPE_N as RECORD_TYPE_N7_0_0_,
        booking0_.EDI_SENDER_AN as EDI_SENDER_AN8_0_0_,
        booking0_.SENDER_SEQUENCE_AN as SENDER_SEQUENCE_AN9_0_0_,
        booking0_.site_an as site_an10_0_0_ 
    from
        EDI_IN_BOOKING booking0_ 
    where
        booking0_.id=?
     May 22, 2015 10:49:43 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
     WARN: SQL Error: 904, SQLState: 42000
     May 22, 2015 10:49:43 AM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
     ERROR: ORA-00904: "BOOKING0_"."SITE_AN": invalid identifier
    
     May 22, 2015 10:49:43 AM org.hibernate.event.internal.DefaultLoadEventListener onLoad
     INFO: HHH000327: Error performing load command : org.hibernate.exception.SQLGrammarException: could not extract ResultSet
     Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not extract ResultSet
    at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:123)
    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.plan.exec.internal.AbstractLoadPlanBasedLoader.getResultSet(AbstractLoadPlanBasedLoader.java:449)
    at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeQueryStatement(AbstractLoadPlanBasedLoader.java:202)
    at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:137)
    at org.hibernate.loader.plan.exec.internal.AbstractLoadPlanBasedLoader.executeLoad(AbstractLoadPlanBasedLoader.java:102)
    at org.hibernate.loader.entity.plan.AbstractLoadPlanBasedEntityLoader.load(AbstractLoadPlanBasedEntityLoader.java:186)
    at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:4126)
    at org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:503)
    at org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:468)
    at org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:213)
    at org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:275)
    at org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:151)
    at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1106)
    at org.hibernate.internal.SessionImpl.access$2000(SessionImpl.java:176)
    at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2587)
    at org.hibernate.internal.SessionImpl.get(SessionImpl.java:991)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:356)
    at $Proxy7.get(Unknown Source)
    at com.dpworld.demo.Main.main(Main.java:23)
       Caused by: java.sql.SQLException: ORA-00904: "BOOKING0_"."SITE_AN": invalid identifier
    
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
    at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
    at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:589)
    at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1957)
    at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(TTC7Protocol.java:850)
    at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2555)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2896)
    at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:644)
    at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:570)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:82)
    ... 22 more
    
      

     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.hql.QueryLoader.list(QueryLoader.java:497)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:387)
    at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:236)
    at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1300)
    at org.hibernate.internal.QueryImpl.list(QueryImpl.java:103)
    at com.icss.framework.service.BaseService.queryByHql(BaseService.java:746)
    at com.icss.aqxxzy.service.SearchService.search147Info(SearchService.java:359)
    at com.icss.aqxxzy.controller.SearchController.search147(SearchController.java:149)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at com.icss.resourceone.sdk.SdkFilter.doFilter(SdkFilter.java:166)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:662)
    Caused by: java.sql.SQLSyntaxErrorException: ORA-00942: Table or view does not exist
    
    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.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:82)
    ... 58 more
    
      

    Подробности об ошибке: набор результатов не может быть инициализирован, поскольку таблица или представление не существует

    1. Класс сущности Java не соответствует типу данных поля базы данных, нет проблем

    2. Если имя таблицы отличается от имени в базе данных, добавьте имя таблицы еще раз

    3. Значение имени, соответствующее столбцу, не соответствует регистру поля базы данных

    4. Файл конфигурации неправильно подключен к базе данных

    Вышеуказанные распространенные причины ошибок исключены, проблем нет

    Причина ошибки: база данных, по которой построена таблица, отличается от базы данных, к которой подключен файл конфигурации, и не проверен тщательно адрес базы данных, по которой построена таблица

    Воспроизведено: https://www.cnblogs.com/baijingting/p/9711813.html

    Подробнее:


    Читайте также:  АНЖЕРО-СУДЖЕНСКИЙ ФЛ КУЗБАССКОГО ОТДЕЛЕНИЯ ФСС РФ, ОКПО 34783373
    Оцените статью
    ФСС Help
    Добавить комментарий