使用JPA进行数据库操作

阿南德

代码工作正常,但当我尝试添加提交命令时,代码开始给出异常。任何建议都会有所帮助。

线路transaction.commit();有问题。

public class MovieDAO 
{
    /**
     * Adds an movie record to database from the given {@link Movie}
     * Displays a success message upon successful execution
     * @param movie
     * @throws Exception
     */

    public void addMovie(Movie movie) throws Exception 
    {
        EntityManagerFactory factory = null;
        EntityManager manager = null;
        MovieEntity movieobj = null;

        try
        {
            factory = Persistence.createEntityManagerFactory("Demo");
            manager = factory.createEntityManager();
            movieobj = new MovieEntity();
            movieobj.setLanguage(movie.getLanguage());
            movieobj.setMovieId(movie.getMovieId());
            movieobj.setMovieName(movie.getMovieName());
            movieobj.setReleasedIn(movie.getReleasedIn());
            movieobj.setRevenueInDollars(movie.getRevenueInDollars());
            EntityTransaction transaction = manager.getTransaction(); 
            transaction.begin();
            manager.persist(movieobj);
            transaction.commit();
        }
        catch(Exception e)
        {
            DOMConfigurator.configure("src/resources/log4j.xml");
            Logger logger = Logger.getLogger(this.getClass());
            logger.error(e.getMessage(), e);
            //throw new Exception("DAO.TECHNICAL_ERROR");
            e.printStackTrace();
        }
        finally
        {
            if(manager != null)
                manager.close();

            if(factory != null)
                factory.close();
        }
    }
}

我得到的错误是:

javax.persistence.RollbackException: Error while committing the transaction
    at org.hibernate.jpa.internal.TransactionImpl.commit(TransactionImpl.java:94)
    at dao.MovieDAO.addMovie(MovieDAO.java:44)
    at ui.UserInterface.addMovie(UserInterface.java:23)
    at ui.UserInterface.main(UserInterface.java:39)
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute statement
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1763)
    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1677)
    at org.hibernate.jpa.internal.TransactionImpl.commit(TransactionImpl.java:82)
    ... 3 more
Caused by: org.hibernate.exception.SQLGrammarException: could not execute statement
    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.executeUpdate(ResultSetReturnImpl.java:211)
    at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:62)
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3124)
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3581)
    at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:104)
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:465)
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:351)
    at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:350)
    at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:56)
    at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1258)
    at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:425)
    at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
    at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:177)
    at org.hibernate.jpa.internal.TransactionImpl.commit(TransactionImpl.java:77)
    ... 3 more
Caused by: java.sql.SQLSyntaxErrorException: ORA-00942: table or view does not exist

    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399)
    at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059)
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522)
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
    at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:587)
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:225)
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:53)
    at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:943)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1150)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:4798)
    at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:4875)
    at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1361)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:208)
    ... 16 more
绝地求生

好像你缺少一张桌子:

ORA-00942: table or view does not exist

检查为您的实体声明的表并验证此表是否存在于您的 Oracle 数据库中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从BroadcastReceiver接收数据后进行数据库操作

CollectionType添加操作以进行数据库刷新

在MVC架构中使用AJAX进行数据库操作

使用实体框架和存储库模式在SQLite和SQL Server数据库中同时进行数据操作

使用JPA执行数据库功能

如何使用python脚本进行数据库迁移?

如何使用VistaDB进行数据库备份?

使用dbplyr进行数据库计算

使用Firebase进行数据库更新的后台通知

使用Azure PowerShell进行数据库迁移

使用 async-await 进行数据库查询

努力进行数据库设计

连接到IBM AS400服务器以进行数据库操作挂起

如何进行数据库迁移,目标在此期间保持完全可操作

使用Spring JdbcTemplate进行多个数据库操作

使用Golang对Redshift数据库进行CRUD操作

每月使用 Symfony 进行自动数据库操作

使用PostgreSQL的flyway或dbup(.net库/ dbup扩展名)进行数据库迁移

使用AngularJs从数据库进行数据检索和归档

如何使用SQL数据库的其他方式进行数据存储

PHP(5.5)-使用MySQLi进行数据库搜索-获取数据列表但无输出

Codeigniter-使用用户数据进行数据库查询

使用PreparedStatement从MySQL数据库进行数据传输的开销

使用MVC从数据库获取行数

使用awk进行数据提取操作

使用“CosmosExecutionStrategy”执行数据库操作时超出了最大重试次数 (6)

在哪里最好地使用Django框架执行数据库操作?

Spring Data JPA-从数据库中查找行数

使用不同的DBMS使用Liquibase进行数据库迁移