簡體   English   中英

休眠映射-外鍵列不能為空-Spring JSP

[英]Hibernate Mapping - Foreign Key Column cannot be null - Spring JSP

員工實體

import java.util.List;

@Entity
@Table(name = "EMPLOYEE")
public class Employee {
    @Id
    @Column(name = "wid")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer wid;

    @ManyToOne(optional = false)
    @JoinColumn(name = "bid")
    private BloodGroup bloodgroup;

    public Employee() {
    }

    public Integer getWid() {
        return this.wid;
    }

    public void setWid(Integer wid) {
        this.wid = wid;
    }

    public BloodGroup getBloodgroup() {
        return bloodgroup;
    }

    public void setBloodgroup(BloodGroup bloodgroup) {
        this.bloodgroup = bloodgroup;
    }
}

血型實體

@Entity
@Table(name="BLOODGROUP")
public class BloodGroup {
    @Id
    @Column(name = "bid")
    @GeneratedValue (strategy= GenerationType.AUTO)
    private Integer bid;

    @Size(min=1,max = 30)
    @Column(name = "blood_name")
    private String blood_name;

    @OneToMany(mappedBy = "bloodgroup",fetch=FetchType.LAZY,
            targetEntity=Employee.class, cascade=CascadeType.PERSIST)
    private List<Employee> emp;
    public BloodGroup() {

    }
    public Integer getBid() {
        return bid;
    }
    public void setBid(Integer bid) {
        this.bid = bid;
    }
    public String getBlood_name() {
        return blood_name;
    }
    public void setBlood_name(String blood_name) {
        this.blood_name = blood_name;
    }
    public List<Employee> getEmp() {
        return emp;
    }
    public void setEmp(List<Employee> emp) {
        this.emp = emp;
    }
}

員工DaoImpl

import com.springmvc.model.BloodGroup;
import com.springmvc.model.Employee;

@Repository("employeeDao")
public class EmployeeDaoImpl extends AbstractDao<Integer, Employee>
        implements EmployeeDao {
    @Override
    public void save(Employee employee) {
        persist(employee);
    }

    @Override
    public List<Employee> allEmployee() {
        Criteria criteria = createEntityCriteria();
        return (List<Employee>) criteria.list();
    }
}

EmployeeServiceImpl

import com.springmvc.service.employeeService;

@Service("EmployeeService")
@Transactional
public class employeeServiceImpl implements employeeService {
    @Autowired
    private EmployeeDao dao;

    @Override

    public void save(Employee employee) {
        dao.save(employee);
    }

    @Override
    public List<Employee> allEmployee() {

        return dao.allEmployee();
    }
}

應用控制器

@RequestMapping(value = {"/new-emp"}, method = RequestMethod.GET)
public String newEmp(ModelMap model) {
    Employee employee = new Employee();
    model.addAttribute("employee", employee);

    ///////// Blood Group List
    List<BloodGroup> bloodgroup = bloodService.allBloodGroup();
    model.addAttribute("bloodgroupList", bloodgroup);
    return "addEmp";
}

// Call on Submission of 'Save or Update' Button Add Employee
@RequestMapping(value = {"/new-emp"}, method = RequestMethod.POST)
public String addEmp(@Valid Employee employee, BindingResult result,
                     ModelMap model,
                     final RedirectAttributes redirectAttributes, HttpServletRequest
                             request, HttpServletResponse response) {
    wService.save(employee);

    return "addEmp";
}

JSP頁面

<form:form method="POST" modelAttribute="employee">
    <form:input type="hidden" path="wid" id="wid"/>

    <label for="bloodgroup">Blood Group:</label>
    <form:select path="bloodgroup" items="${blood}"
                 itemValue="bid" itemLabel="blood_name" name="blood1"/>

    <c:choose>
        <c:when test="${edit}">
            <input type="submit" value="Update"/>
        </c:when>

        <c:otherwise>
            <input type="submit" value="Save"/>
        </c:otherwise>
    </c:choose>

</form:form>

HTTP狀態500-請求處理失敗; 嵌套的異常是org.hibernate.exception.ConstraintViolationException:無法執行語句com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:列“ bid”不能為空。 .newInstance(未知來源)sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知來源)java.lang.reflect.Constructor.newInstance(未知來源)com.mysql.jdbc.Util.handleNewInstance(Util.java:408)

好吧,您確實已經明確地說過: @ManyToOne(optional=false)表示它不能為null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM