admin0_1 2019-06-13 23:09 采纳率: 0%
浏览 306

消息 attempt to create saveOrUpdate event with null entity 一直报错这个快逼疯了

实体类
package com.user.bean;

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

@Entity
@Table(name="clas")
public class Student {

@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
@Column(length=600,nullable=false)
private String name;
@Column(length=600,nullable=false)
private String desc;
@Column(length=600,nullable=false)
private String remark;

public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getClas() {
return name;
}
public void setClas(String clas) {
this.name = clas;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
}

dao里面
package com.user.dao.impl;

import javax.annotation.Resource;

import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;

import com.user.bean.Student;
@Repository
public class IStudentDao extends HibernateDaoSupport implements com.user.dao.IStudentDao {
@Resource(name="sessionFactory")
public void setHibernateSessionFactroy(SessionFactory sessionFactory){
this.setSessionFactory(sessionFactory);
}

//添加分类
public void addStudent(Student student) {
// TODO Auto-generated method stub
this.getHibernateTemplate().save(student);

}
}

service里面

package com.user.service.impl;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import com.user.dao.IStudentDao;
import com.user.bean.Student;
@Service
public class StudentService implements com.user.service.StudentService {
@Resource
private IStudentDao studentDao;

@Transactional(readOnly=false,propagation=Propagation.REQUIRED)
public void addStudent(Student student) {
// TODO Auto-generated method stub
studentDao.addStudent(student);

}
}

Action里面

package com.user.action;

import javax.annotation.Resource;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.opensymphony.xwork2.ActionSupport;
import com.user.bean.Student;
import com.user.service.StudentService;

@Controller
@Scope("prototype")
public class StudentAction {
@Resource
private StudentService studentService;
private Student student;

//查询分类管理
public String list() {
return "list";
}
//到添加的页面
public String toAddpage() {

return "toAddpage";                                                                                                                                                                

}
//添加的方法
public String add() {
studentService.addStudent(student);
return "add";
}
}

jsp里面

<%--

action="${ pageContext.request.contextPath }/student_add.action" method="post">
                        <div class="am-form-group">
                            <label for="user-name" class="am-u-sm-3 am-form-label">
                                分类名称</label>
                            <div class="am-u-sm-9">
                                <input type="text" id="name" required
                                    placeholder="分类名称" name="student.name">
                                    <small>10字以内...</small>
                            </div>
                        </div>
                        <div class="am-form-group">
                            <label for="user-name" class="am-u-sm-3 am-form-label">
                                分类描述</label>
                            <div class="am-u-sm-9">
                                <input type="text" id="student.name" required
                                    placeholder="分类描述" name="student.desc">
                                    <small>10字以内...</small>
                            </div>
                        </div>
                        <div class="am-form-group">
                            <label for="user-intro" class="am-u-sm-3 am-form-label">
                                备注</label>
                            <div class="am-u-sm-9">
                                <textarea class="" rows="5" id="intro" name="student.remark"
                                    placeholder="输入备注"></textarea>
                                <small>250字以内...</small>
                            </div>
                        </div>
                        <div class="am-form-group">
                            <div class="am-u-sm-9 am-u-sm-push-3">
                                <input type="submit" class="am-btn am-btn-success" value="添加分类" />
                                <a href="type.jsp"><input  class="am-btn am-btn-success" value="取消添加" /></a>
                            </div>
                        </div>
                    </form> --%>
  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-10 08:35
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在Spring框架中,当尝试将一个null值保存到数据库时,可能会出现org.hibernate.HibernateException: Cannot persist null entity instances错误。这是因为在Hibernate中,当你试图保存一个null对象时,它会抛出异常。

    要解决这个问题,你可以考虑以下几种方法:

    1. 避免传递null值:在你的业务逻辑中,避免传递null值给任何模型属性。
    2. 使用枚举或自定义类型转换器:如果你知道你需要传递null值的情况,可以使用枚举或自定义类型转换器来处理这种情况。
    3. 在数据库层进行验证:在数据库层对传入的数据进行验证,确保它们不是null值。
    4. 使用事务隔离级别:通过设置事务隔离级别(例如,使用TransactionDefinition.SUPPORTS_READ_COMMITTED)来防止在非事务环境下发生null值问题。

    对于你提供的代码示例,我建议你在DAO和Service层中增加一些额外的检查和验证,以确保传递的对象不为null,并且如果传递的是null,那么应该有相应的处理方式。例如:

    在Service层:

    @Transactional(propagation=Propagation.REQUIRES_NEW)
    public void addStudent(Student student) {
        if (student == null) {
            throw new IllegalArgumentException("Student cannot be null");
        }
        // 其他操作...
    }
    

    在DAO层:

    @PrePersist
    public void prePersist(Student student) {
        if (student == null) {
            throw new IllegalArgumentException("Student cannot be null");
        }
        // 其他操作...
    }
    

    或者,你也可以在Spring配置文件中进行配置,比如在applicationContext.xml文件中:

    <bean id="myAutowiredBean" class="com.example.MyClass">
        <property name="someNullProperty" value="${someNullValue}" />
    </bean>
    
    <bean id="myAutowiredBean" class="com.example.MyClass">
        <property name="someNullProperty" value="${someNonNullValue}" />
    </bean>
    

    在这个例子中,我们有两个相同的Bean,一个是带有null值的,另一个是带有一个固定值的。这将帮助你在运行时检测到null值并提供适当的错误信息。

    评论

报告相同问题?

悬赏问题

  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)
  • ¥15 机器人轨迹规划相关问题