有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么不能将数据持久化到数据库中

我得到:

Can not set java.lang.Integer field com.springboot.Model.departmentModel.id to com.springboot.Model.departmentModel

在我的Spring Boot项目中,试图将数据持久化到数据库中

申请。属性文件:

spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.jsp
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost/college_management
spring.datasource.username=root
spring.datasource.password=
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
server.port=8099

部门模型类:

package com.springboot.Model;

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

@Entity
@Table(name = "department_master")
public class departmentModel {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    private String depname;
    private String email;
    private String password;

    // getter and setter

}

admindao类:

package com.springboot.Dao;

import com.springboot.Model.departmentModel;

public interface adminDao {
    void insertDepartment(departmentModel dModel);

}

admindaoImpl类:

package com.springboot.Dao;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.springframework.stereotype.Repository;

import com.springboot.Model.departmentModel;

@Repository
public class adminDaoImpl implements adminDao {

    public void insertDepartment(departmentModel dModel) {
        Configuration con = new Configuration().configure("hibernate.cfg.xml").addAnnotatedClass(departmentModel.class);
        SessionFactory sf = con.buildSessionFactory();
        Session session = sf.openSession();
        Transaction t = session.beginTransaction();
        session.persist(dModel);
        t.commit();
        session.close();
    }

}

adminService类:

package com.springboot.Service;

import com.springboot.Model.departmentModel;

public interface adminService {
    public void insertDepartment(departmentModel dModel);
}

adminServiceImpl类:

package com.springboot.Service;

import javax.transaction.Transactional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.springboot.Dao.adminDao;
import com.springboot.Model.departmentModel;

@Service
public class adminServiceImpl implements adminService {
    @Autowired
    private adminDao dao;

    @Override
    @Transactional
    public void insertDepartment(departmentModel dModel) {
        this.dao.insertDepartment(dModel);
    }

}

adminController类:

package com.springboot.Controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.springboot.Model.departmentModel;
import com.springboot.Service.adminService;

@Controller
public class adminController {
    @Autowired
    private adminService service;

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String homepg(Model mdl, @ModelAttribute departmentModel aModel) {
        mdl.addAttribute("adminLogin", aModel);
        return "registration";
    }
    
    @RequestMapping(value = "/insert", method = RequestMethod.POST, headers = "Accept=application/json")
    public String insertDepartment(Model mdl, @ModelAttribute("dModel") departmentModel dModel) {
        this.service.insertDepartment(dModel);
        //mdl.addAttribute("adminLogin", dModel);
        return "redirect:/";
    }

}

注册。jsp文件:

<!DOCTYPE html>
<html lang="en" xmlns:th="https://www.thymeleaf.org/">
<head>
<meta charset="ISO-8859-1">
<title>College Management System</title>
<link
    href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"
    rel="stylesheet">
<link th:href="@{../css/style.css}" rel="stylesheet">
</head>
<body>
    <div class="container">
        <div class="row">
            <div class="col-lg-3 col-md-2"></div>
            <div class="col-lg-6 col-md-8 login-box">
                <div class="col-lg-12 login-key">
                    <i class="fa fa-key" aria-hidden="true"></i>
                </div>
                <div class="col-lg-12 login-title">REGISTRATION</div>

                <div class="col-lg-12 login-form">
                    <div class="col-lg-12 login-form">
                        <form th:action="@{/insert}" th:object="${adminLogin}" method="post">
                            <div class="form-group">
                                <label class="form-control-label">DEPARTMENT NAME</label> <input
                                    type="text" th:field="*{depname}" class="form-control">
                            </div>
                            <div class="form-group">
                                <label class="form-control-label">DEPARTMENT EMAIL</label> <input
                                    type="email" th:field="*{email}" class="form-control">
                            </div>
                            <div class="form-group">
                                <label class="form-control-label">DEPARTMENT PASSWORD</label> <input
                                    type="password" th:field="*{password}" class="form-control">
                            </div>

                            <div class="col-lg-12 loginbttm">
                                <div class="col-lg-6 login-btm login-button">
                                    <button type="submit" class="btn btn-outline-primary">REGISTER</button>
                                </div>
                            </div>
                        </form>
                    </div>
                </div>
                <div class="col-lg-3 col-md-2"></div>
            </div>
        </div>
    </div>
    <script
        src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js"></script>
</body>
</html>

错误:

Caused by: org.hibernate.property.access.spi.PropertyAccessException: Error accessing field [private java.lang.Integer com.springboot.Model.departmentModel.id] by reflection for persistent property [com.springboot.Model.departmentModel#id] : com.springboot.Model.departmentModel@72fd9d3a
    at org.hibernate.property.access.spi.GetterFieldImpl.get(GetterFieldImpl.java:75)
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:230)
    at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:5189)
    at org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:4889)
    at org.hibernate.engine.internal.ForeignKeys.isTransient(ForeignKeys.java:294)
    at org.hibernate.event.internal.EntityState.getEntityState(EntityState.java:59)
    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:95)
    at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:55)
    at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:99)
    at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:720)
    at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:706)
    at com.springboot.Dao.adminDaoImpl.insertDepartment(adminDaoImpl.java:18)
    at com.springboot.Dao.adminDaoImpl$$FastClassBySpringCGLIB$$ab6f421.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:779)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:750)
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137)
    ... 68 more
Caused by: java.lang.IllegalArgumentException: Can not set java.lang.Integer field com.springboot.Model.departmentModel.id to com.springboot.Model.departmentModel
    at java.base/jdk.internal.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:167)
    at java.base/jdk.internal.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:171)
    at java.base/jdk.internal.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:58)
    at java.base/jdk.internal.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorImpl.java:36)
    at java.base/java.lang.reflect.Field.get(Field.java:419)
    at org.hibernate.property.access.spi.GetterFieldImpl.get(GetterFieldImpl.java:71)
    ... 85 more

共 (0) 个答案