我们首先看一下异常信息:
- net.sf.hibernate.AssertionFailure: null id in entry (don't flush the Session after
- an exception occurs)
- at net.sf.hibernate.impl.SessionImpl.checkId(SessionImpl.java:2605)
- at net.sf.hibernate.impl.SessionImpl.flushEntity(SessionImpl.java:2429)
- ... ...
遇到这个异常实属不小心所致,最初看到异出的错误信息时我误认为是主键为空所致。一着急竟然把entry当成了entity理解,真是让人笑话^_^。
其实个该异常信息是在提示我们没有为数据中的非空字段设置值。呵呵!看,够笨的吧。怎么会忘记为非空字段设置值呢?当然一般我们是不会犯这样的错。但是需要说的一点是,在数据的设计中比如SqlServer,我们为某个非空字段设置了默认值。如果我们在通过Hibernate增加一条记录的时候我们必须显式的通过setXxx方法为该字段(/属性)赋值(/默认值)。因为在保存之前Hibernate会检查该非空字段对应的实体属性是否为空。我就是忽略了这一点,所以才会造成上面的异常。
如果不想对有默认值的非空字段进行显式赋值的话,我们可以通过xxx.hbm.xml配置文件来实现,也就是在配置文件中给出该字段的默认值。
分享到:
相关推荐
3. **异常转换**:Spring可以将Hibernate抛出的异常转化为其自身的一致性异常体系,便于上层统一处理。 ##### 2.1 配置Spring管理Hibernate 在Spring的配置文件中,可以通过如下方式来配置Hibernate和Spring的集成...
### Spring+Hibernate下的数据库连接动态切换 #### 一、引言 在开发多租户或多数据库环境的应用系统时,往往需要实现动态切换数据库连接的功能。本文档将详细探讨如何在Spring与Hibernate框架下实现数据库连接的...
`<bean id="madref" class="cn.sinojava.bean.MapArrayDemo">` 的`<map>`子标签允许我们将bean或值作为键值对进行注入,如`<entry key="id"><ref bean="toolsref1"/></entry>`,这在需要关联bean时非常有用。...
在使用Java Hibernate框架进行数据操作时,我们常常会遇到ValueList和HQL(Hibernate Query Language)结合使用的情况。HQL是一种面向对象的查询语言,它允许开发者以对象和属性的方式编写查询,而不是直接操作...
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> <!-- 其他 Hibernate 配置... --> ``` ### 四、总结 通过使用 `AbstractRoutingDataSource`,你可以轻松地...
<provider>org.hibernate.jpa.HibernatePersistenceProvider <class>com.example.User</class> ``` ##### 3.2 创建实体 创建实体类时,需要使用 JPA 注解来标记实体类、主键字段等。 **示例代码...
一 Jeecms安装过程 ...<id name="id" type="java.lang.Integer" column="id"><generator class="identity"/></id> <property name="title" column="title" type="java.lang.String" not-null="true" /> ...