gpt4 book ai didi

java - JPA OneToOne,外键在 Spring Boot 上获取 null

转载 作者:太空宇宙 更新时间:2023-11-04 10:02:52 27 4
gpt4 key购买 nike

我有@OneToOne JPA 关系。要保存的值来自 JSP 表单。我调试了我的代码:

id = 0
firstName = "john"
firstName = "doe"
security =
id = 0
username = "john1"
password = "pwd"
employee = null

这是我的实体:

@Entity
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@NotBlank(message = "First Name is a required field.")
private String firstName;
@NotBlank(message = "Last Name is a required field.")
private String lastName;
@Valid
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "employee", optional = false)
private Security security;
...
}

@Entity
public class Security {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@NotBlank(message = "Username is a required field.")
private String username;
@NotBlank(message = "Password is a required field.")
private String password;
@OneToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "employee_id", nullable = false)
private Employee employee;
...
}

我不明白为什么employee_id 变得为空:

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'employee_id' cannot be null

我使用以下代码实现了 CommandLineRunner 并且它正在工作:

Employee employee = new Employee();
employee.setFirstName("Julez");
employee.setLastName("Jupiter");

Security security = new Security();
security.setUsername("julez");
security.setPassword("pwd");

employee.setSecurity(security);
security.setEmployee(employee);

employeeRepository.save(employee);

Spring Boot/MVC 或 Spring Data JPA 如何自动实现类似于我的 CommnadLineRunner 代码?我在这里搜索了很多教程和问题,但我只能找到使用 CommandLineRunner 而不是使用表单。谢谢。

最佳答案

保存员工,然后保存安全

Employee employee = new Employee();
employee.setFirstName("Julez");
employee.setLastName("Jupiter");

employee = employeeRepository.save(employee);

Security security = new Security();
security.setUsername("julez");
security.setPassword("pwd");

security.setEmployee(employee);
securityRepository.save(security);

关于java - JPA OneToOne,外键在 Spring Boot 上获取 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53277696/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com