当前位置: 首页 > 知识库问答 >
问题:

HTTP状态500-请求处理失败;嵌套的异常是org。冬眠例外ConstraintViolationException:无法执行语句

袁英豪
2023-03-14

我正在尝试添加/更新学生,但在更新学生时,我收到一个错误。但在添加学生时,效果很好。我在更新时遇到此错误:-

HTTP状态500-请求处理失败;嵌套异常是org.springframework.dao.数据完整性违反异常:无法执行语句;SQL[n/a];约束[null];嵌套异常是org.hibernate.exception.约束违反异常:无法执行语句

add-students.jsp

<form:form action="addStudent" enctype="multipart/form-data" modelAttribute="addstd" method="POST" >
    <form:hidden path="id" />
     ${message}
    <form:errors path="firstName" cssClass="error" />
    <form:input path="firstName" placeholder="Fistname" />

    <form:errors path="lastName" cssClass="error" />
    <form:input path="lastName" placeholder="Lastname" />

    <form:input path="contact_No" placeholder="Contact Number" />
    <form:input path="address" placeholder="Address" />

    <form:errors path="email" cssClass="error" />
    <form:input path="email" placeholder="Email" />

    <p class="msg">
        Year:
    <form:select path="year">
            <c:forEach var="temp" items="${studentyear}">
            <form:option value="${temp.yearId}">${temp.year}</form:option>
            </c:forEach>
        </form:select> 

      Faculty: 
        <form:select path="faculty">
            <c:forEach var="temp" items="${studentfaculty}">
            <form:option value="${temp.faculty_id}" >${temp.faculty}</form:option>
            </c:forEach>
        </form:select>
      Profile: <input type="file" name="image" accept="image/*" />

    </p>
    <input type="submit" value="Add/Update Record" class="button" />
</form:form>

@控制器类

@RequestMapping(value="/addStudent",method=RequestMethod.POST)
public String saveStudent(@RequestParam("image") MultipartFile file,@RequestParam("id") int theId,@ModelAttribute("addstd") @Valid StudentInfo theStudent,BindingResult result,Model model){
    String fileName=null; 
    if(!file.isEmpty()){

        try {
            String path= session.getServletContext().getRealPath("/resources/images");
            String newName=String.valueOf(new java.util.Date().getTime());
            fileName=file.getOriginalFilename();
            String ext=FilenameUtils.getExtension(fileName);
            if(ext.equalsIgnoreCase("jpg") || ext.equalsIgnoreCase("jpeg") || ext.equalsIgnoreCase("png")){
            File imageFile=new File(path,newName+"."+ext);
            file.transferTo(imageFile);
            theStudent.setImages(newName+"."+ext);

            if(theId!=0){
               StudentInfo std=studentService.getStudent(theId);
               String images= std.getImages();
               File oldImage=new File(path,images);
            Files.delete(oldImage.toPath());
            }
            }
        } catch (Exception e) {

        }
    }
    if(result.hasErrors()){


    List <Year> theYear = studentService.getYear();
    model.addAttribute("studentyear",theYear);

    List<Faculty> theFaculty=studentService.getFaculty();
    model.addAttribute("studentfaculty",theFaculty);
        return "add-students";
    }else{
        studentService.saveStudent(theStudent);
        return "redirect:/login";

        }
}

@RequestMapping("/showFormForUpdate")
public String showUpdateStudent(@RequestParam("studentId") int theId, Model model){

     StudentInfo theStudent=studentService.getStudent(theId);
     model.addAttribute("addstd",theStudent);

    List <Year> theYear = studentService.getYear();
    model.addAttribute("studentyear",theYear);

    List<Faculty> theFaculty=studentService.getFaculty();
    model.addAttribute("studentfaculty",theFaculty);
     return "add-students";
}

学生道。班

 public void saveStudent(StudentInfo theStudent) {
    Session currentSession=sessionFactory.getCurrentSession();       
    currentSession.saveOrUpdate(theStudent);

}

学生信息。班

@Entity
@Table (name="studentinfo")
public class StudentInfo implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private int id;


@Column(name="year_id")
private int year;


@Column(name="faculty_id")
private int faculty;

@NotEmpty(message="First Name cannot be empty")
@Column(name="firstname")
private String firstName;

@NotEmpty(message="Last Name cannot be empty")
@Column(name="lastname")
private String lastName;

@Column(name="contact_no")
private String contact_No;

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


@Email(message="Enter a valid email address")
@Column(name="email")
private String email;


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

@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name="ID")
private User user;

 //getter and setter here

使用者班

@Entity
@Table(name="user")
public class User {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="user_id")
private int user_id;

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

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

@OneToOne(mappedBy = "user",fetch = FetchType.LAZY)
private StudentInfo info;

//getter and setter here

共有1个答案

隆芷阳
2023-03-14

在StudentInfo类中,有一个字段:

private User user;

您尚未将用户映射到表单控制器中的任何字段。

您可以这样映射您的用户:

<form:hidden path="user.user_id"/>

如果你想让这个值为null然后提供

nullable = true

在一对一的注释中,也允许在db中为null。

如果你正在做添加学生,并且你没有用户为空,那么你将不得不以某种方式将用户注入你的控制器。

例如,在您的控制器方法中,当添加新的学生信息时,从数据库获取用户信息,然后注入学生信息。我写的sudo代码如下:

// User user = session.get(User.class, 1);
// studentInfo.setUser(user);
// saveorUpdate studentInfo
 类似资料:
  • 我正在通过这个类更新一些值,createdBy和lastModifiedBy的值不是必须更新的。所以,我不是从邮递员那里传递这些值。它接受lastModifiedBy列,但当我不传递createdBy值时,它会显示sql异常。为什么会这样? 控制台如下所示: 在org。springframework。aop。框架反射方法调用。继续(ReflectiveMethodInvocation.java:1

  • 我现在正在使用JPA eclipselink,我想用Eclipselink连接到我的数据库 我有一些类de表在我的数据库和查询来获取我的条目: 我为我的桌子做了一些课程: FDC_DBCHANGE 已执行FDC_ 和FDC_系统 当我在Tomcat上运行它时,有一个例外: 组织。springframework。网状物util。NestedServletException:请求处理失败;嵌套异常是异

  • 我有jsp和html页面的应用程序 说明服务器遇到一个内部错误,使其无法满足此请求。 例外 NestedServletException:处理程序处理失败;嵌套异常是java.lang.NosuchMethoderror:javax.servlet.http.HttpServletResponse.getHeader(ljava/lang/string;)ljava/lang/string;rig

  • 请帮助我更好地学习Spring 3 MVC的基础知识,我试图学习Spring JSR303:Bean验证,但根本无法解决以下问题,我已经花了一天多的时间来解决这个问题:( 我想要一个简单的验证在这里工作。jsp中的name、password和email字段不能留空,这是我们的目标。到目前为止,每次尝试将所有字段都为空提交hello.jsp时,都会遇到以下错误 HTTP状态500-处理程序处理失败;

  • 这是我的同意模式 这是同意控制器获取声明 这是声明后的同意 同意html thymeleaf表单是 提交表格后。我得到这个错误 HTTP状态500-请求处理失败;嵌套异常是org.thymeleaf.exceptions.TemplateProcessing异常:异常评估SpringEL表达式:"user.providers"(提供者/createOrUpdateConentForm 组织。spr

  • 异常严重:Servlet。路径为[z2]的上下文中servlet[dispatcher]的service()引发异常[请求处理失败;嵌套异常为org.springframework.dao.DataIntegrityViolationException:not null属性引用null或瞬时值:com.spring.entity.Product.cd;嵌套异常为org.hibernate.Prop