hibernate save方法出错

问题描述

hibernate save方法出错

对应的代码:

 public void saveAService(Services service) {
        // TODO Auto-generated method stub
        svcMngDao.save(service);
    }
    @Id
    @Column(name="ID")
    @GeneratedValue(strategy=GenerationType.TABLE, generator="TableGen")
    @TableGenerator(name="TableGen", table="ID_GEN",
    pkColumnName="KEYID", valueColumnName="KEYVALUE", pkColumnValue="SERVICE_ID", allocationSize=1)
    public Integer getId(){
        return id;
    }

出错前控制台信息:
Hibernate: select tbl.KEYVALUE from ID_GEN tbl where tbl.KEYID=? for update
1430097341147|6|statement|connection 30|select tbl.KEYVALUE from ID_GEN tbl where tbl.KEYID=? for update|select tbl.KEYVALUE from ID_GEN tbl where tbl.KEYID='SERVICE_ID' for update
Hibernate: update ID_GEN set KEYVALUE=? where KEYVALUE=? and KEYID=?
1430097341155|4|statement|connection 30|update ID_GEN set KEYVALUE=? where KEYVALUE=? and KEYID=?|update ID_GEN set KEYVALUE=5 where KEYVALUE=4 and KEYID='SERVICE_ID'
1430097341158|2|commit|connection 30||
Hibernate: insert into SERVICES (SERVICE_HOST, SERVICE_NAME, SERVICE_STATE, ID) values (?, ?, ?, ?)
1430101036539|11|statement|connection 28|insert into SERVICES (SERVICE_HOST, SERVICE_NAME, SERVICE_STATE, ID) values (?, ?, ?, ?)|insert into SERVICES (SERVICE_HOST, SERVICE_NAME, SERVICE_STATE, ID) values ('192.168.0.1', 'ActiveX Installer', 'started', 4)
1430101036563|1|rollback|connection 28||

出错时控制台信息:
四月 27, 2015 10:17:16 上午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [dispatcherServlet] in context with path [/PodCloud] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute statement] with root cause
java.sql.SQLSyntaxErrorException: ORA-00942: 表或视图不存在

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:395)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:802)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:521)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:205)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1008)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1307)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3449)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3530)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350)

解决方案

主要是看你的映射和数据库表是否一致。包括了不可空字段、字段名、字段类型、文本字段的长度等等。

解决方案二:

看看是不是表名写错了

解决方案三:

你只是save报错还是别的都报错,主要是你没有给我们看报错的那段换,你可以试下delete方法,有可能是你的映射和数据库配置有个东西写错,特别是字段,很容易写错,最好是复制粘贴,我以前初学就遇到过很多这个问题,我建议你写xml格式,注解会让类看着很臃肿,当然这是个人见解

时间: 2024-08-15 12:57:14

hibernate save方法出错的相关文章

Hibernate中的session的save方法。

问题描述 Hibernate中的session的save方法. 我正在学习hibernate框架,然后在做一个插入的时候遇到了一个问题.通过跟踪我发现在执行session.save(obj);方法时,程序就不动了.并且在获取session时还打印出下面红色的信息. 请问一个是什么原因以及怎么解决呢? public int insertClient(Client client) { // TODO Auto-generated method stub //HibernateUtil.closeSe

【hibernate 执行方法未插入数据库】hibernate的save方法成功执行,但是未插入到数据库

  今天做项目,碰上这个问题: hibernate的save方法成功执行,但是未插入到数据库. Dao层代码: 1 @Override 2 public void save(T t) { 3 this.getSession().save(t); 4 } View Code Service层的代码: 1 @Override 2 public void save(T t) { 3 // TODO Auto-generated method stub 4 dao.save(t); 5 } View C

EJB中使用Hibernate的方法以及常见问题

EJB中使用Hibernate的方法应该大家都会,不过许多人可能没注意下面几个问题,首先我们来看下面这段代码. public class HibernateTestBean implements SessionBean ...{ SessionContext sessionContext; SessionFactory sf; public void setSessionContext(SessionContext sessionContext) ...{ this.sessionContext

mvc注解-spring MVC注解 + hibernate +jpa配置 出错 具体如下

问题描述 spring MVC注解 + hibernate +jpa配置 出错 具体如下 这个是错误 No unique bean of type [javax.persistence.EntityManagerFactory] is defined: expected single bean but found 0 下面为XML配置文件 web.xml 导入hibernate <filter> <filter-name>openEntityManagerInViewFilter&

编码-hibernate运行总是出错 求解答

问题描述 hibernate运行总是出错 求解答 一直出错困扰我两天了 求大家帮忙解决一下 谢谢了一月 18 2016 11:10:26 下午 org.hibernate.Version logVersionINFO: HHH000412: Hibernate Core {5.0.7.Final}一月 18 2016 11:10:26 下午 org.hibernate.cfg.Environment INFO: HHH000206: hibernate.properties not found一

hibernate save、delete添加事务

问题描述 hibernate save.delete添加事务 我是用的myeclipse,在添加hibernate框架的时候,自动生成了xxxxxDao方法,在这里边有save跟delete方法,但这些方法都默认的使用了事务.当我调用他们的时候可能需要多个save放到一个事务里执行,这样就会报错,应该怎么办呢 解决方案 你自动生成的这个xxxxDao是个什么东西啊,我添加hibernate框架时除了自动生成配置文件和映射文件外从来就没有生成多余的东西;自动生成的东西你把它删 除自己写不可以吗.

java Hibernate save()与persist()区别_java

Hibernate 之所以提供与save()功能几乎完全类似的persist()方法,一方面是为了照顾JPA的用法习惯.另一方面,save()和 persist()方法还有一个区别:使用 save() 方法保存持久化对象时,该方法返回该持久化对象的标识属性值(即对应记录的主键值):但使用 persist() 方法来保存持久化对象时,该方法没有任何返回值.因为 save() 方法需要立即返回持久化对象的标识属性,所以程序执行 save() 会立即将持久化对象对应的数据插入数据库:而 persist

Hibernate save()与persist()区别

Hibernate 之所以提供与save()功能几乎完全类似的persist()方法,一方面是为了照顾JPA的用法习惯.另一方面,save()和 persist()方法还有一个区别:使用 save() 方法保存持久化对象时,该方法返回该持久化对象的标识属性值(即对应记录的主键值):但使用 persist() 方法来保存持久化对象时,该方法没有任何返回值.因为 save() 方法需要立即返回持久化对象的标识属性,所以程序执行 save() 会立即将持久化对象对应的数据插入数据库:而 persist

自己动手写ASP.NET ORM框架(七):实现新增功能Save方法

在上一篇中讲了根据ID查询的功能FindById方法,接下来将实现Save方法的功能,代码如 下1-1: #region 将实体数据保存到数据库 public int Save<T>(T entity) { //从实体类中获取新增数据所需的表信息存于TableInfo对象中 TableInfo tableInfo = DbEntityUtils.GetTableInfo (entity,DbOperateType.INSERT); //根据tableInfo对象中的数据生成新增的SQL语句 s