【发布时间】:2021-07-26 22:36:30
【问题描述】:
我有两个模型,一个给客户,一个给卖家,在客户表中我只需要一个卖家,已经在卖家表中,我可以为一个卖家有多个客户。
但是当我尝试添加新客户并设置销售人员的 ID 时,它就不起作用了。
代码如下:
- 卖家型号:
package com.crud.spring.jpa.postgresql.model;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.*;
@Entity
@AllArgsConstructor
@Getter
@Setter
@Table(name = "sellers", uniqueConstraints = @UniqueConstraint(columnNames = "code"))
public class Seller {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "code")
private long code;
@Column(name = "name")
private String name;
public Seller(){
}
}
- 客户端模型:
package com.crud.spring.jpa.postgresql.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.OnDelete;
import org.hibernate.annotations.OnDeleteAction;
import javax.persistence.*;
@Entity
@AllArgsConstructor
@Getter
@Setter
@Table(name = "clients", uniqueConstraints = @UniqueConstraint(columnNames = "code"))
public class Client {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "code")
private long code;
@Column(name = "name")
private String name;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "seller_id", referencedColumnName = "id", nullable = false)
@OnDelete(action = OnDeleteAction.CASCADE)
@JsonIgnore
private Seller seller;
public Client(){
}
}
- 客户端控制器:
@PostMapping("/clients")
public ResponseEntity createClients(@RequestBody Client client) {
return this.service.createClients(client);
}
- 客户服务:
public ResponseEntity createClients(Client client) {
try {
client = this.repository.save(client);
return new ResponseEntity(client, HttpStatus.OK);
} catch (Exception e){
return new ResponseEntity(e, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
- 后卖家:
- 发布客户:
- 错误是:
"entityName": "com.crud.spring.jpa.postgresql.model.Client", "propertyName": "seller", "message": "not-null property references a 空值或瞬态值: com.crud.spring.jpa.postgresql.model.Client.seller", "localizedMessage": "非空属性引用空或瞬态 值:com.crud.spring.jpa.postgresql.model.Client.seller", "suppressed": [] "message": "not-null 属性引用了一个 null 或 瞬态值:com.crud.spring.jpa.postgresql.model.Client.seller; 嵌套异常是 org.hibernate.PropertyValueException: not-null 属性引用空值或瞬态值: com.crud.spring.jpa.postgresql.model.Client.seller",
enter code here"localizedMessage": "not-null 属性引用了 null 或 瞬态值:com.crud.spring.jpa.postgresql.model.Client.seller; 嵌套异常是 org.hibernate.PropertyValueException: not-null 属性引用空值或瞬态值: com.crud.spring.jpa.postgresql.model.Client.seller",
【问题讨论】:
标签: java spring spring-boot hibernate jpa