【问题标题】:Spring Entity Manager with H2 error: NULL not allowed for column "EMPLOYEE_ID" error带有 H2 错误的 Spring Entity Manager:列“EMPLOYEE_ID”错误不允许为 NULL
【发布时间】:2021-06-23 12:38:05
【问题描述】:

当我尝试在soapUI 中使用POST 方法插入一个值时出现此错误。当我编写插入查询时,值被插入到数据库中,但 POST 方法在soapUI中不起作用。

“EMPLOYEE_ID”列不允许为 NULL; SQL语句:

我这里有两个实体类

Employee.java:

@Entity
@Table(name="EMPLOYEE")
public class Employee{

@Id
@GeneratedValue(strategy=Generation.IDENTITY)
@Column(name="EMPLOYEE_ID", updatable= false, nullable= false)
private long employeeId;

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

@Column(name="EMAIL_ID")
private String email;

@OneToMany(cascade=cascadeType.ALL , fetch = FetchType.LAZY, mappedBy = "employee")
private List<Address> address = new ArrayList<Address>();

//Getters and Setters

地址.java:

@Entity
@Table(name="ADDRESS")
public class Address{

@Id
@GeneratedValue(strategy=Generation.IDENTITY)
@Column(name="ADDRESS_ID")
private long addressId;

@Column(name="ADDRESS_LINE_1")
private String addressLine1;

@Column(name="CITY")
private String city;

@Column(name="STATE")
private String state;

@Column(name="COUNTRY")
private String country;

@Column(name="PINCODE")
private int pincode;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="EMPLOYEE_ID", nullable = false)
private Employee employee;    

//Getters and Setters

我尝试通过soapUI POST 方法发布以下值。

{

 "name": "Ron",
 "email": "ron@gmail.com",
 "address": [
         {
           "addressLine1": "No 21",
           "city": "Chennai",
           "state": "Tamil Nadu",
           "country": "India",
           "pincode": 187
          },
              {
           "addressLine1": "No 90",
           "city": "Banglore",
           "state": "Karnataka",
           "country": "India",
           "pincode": 187
          }
        ]
}

当我尝试插入上面的内容时,我得到了列“EMPLOYEE_ID”不允许使用 NULL 的错误; SQL 语句。

【问题讨论】:

    标签: java spring-boot entity entitymanager


    【解决方案1】:

    您需要从地址实体中删除可为空的部分,然后它才会起作用。

    使用这个。

    Address.java
    
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="EMPLOYEE_ID")
    private Employee employee; 
    
    

    【讨论】:

    • 这会插入address和employee的值,但是address表中employeeId的值为null,插入为null。也就是地址表的外键列。
    猜你喜欢
    • 2019-11-25
    • 2023-02-09
    • 2013-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-28
    • 1970-01-01
    相关资源
    最近更新 更多