Spring 一对多关系抛出(“权限”组“id”列中的null值违反NOTNULL约束)
Parent.java:Spring 一对多关系抛出(“权限”组“id”列中的null值违反NOTNULL约束),spring,spring-boot,hibernate,spring-data-jpa,hibernate-mapping,Spring,Spring Boot,Hibernate,Spring Data Jpa,Hibernate Mapping,Parent.java: @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "pgroup_generator") @SequenceGenerator(name="pgroup_generator", sequenceName = "pg_seq", allocationSize=50) @Column(
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "pgroup_generator")
@SequenceGenerator(name="pgroup_generator", sequenceName = "pg_seq", allocationSize=50)
@Column(
name = "group_id",
unique = true,
updatable = false,
nullable = false
)
private Long id;
@Column(name="group_name",unique = true)
private String groupName;
@OneToMany(targetEntity=PermissionsEntity.class, mappedBy = "permissionGroup", cascade=CascadeType.ALL, fetch = FetchType.LAZY)
private List<PermissionsEntity> permissions= new ArrayList<>();
public void setPermissions(List<PermissionsEntity> permissions) {
this.permissions = permissions;
for(PermissionsEntity p:permissions) {
p.setPermissionGroup(this);
}
}
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name="group_id", referencedColumnName = "group_id", insertable = false, updatable = false)
private PermissionGroupEntity permissionGroup;
org.postgresql.util.PSQLException: ERROR: null value in column "permission_group_id" violates not-null constraint
Detail: Failing row contains (11, null, 2020-11-02 10:52:34.849, null, 2020-11-02 10:52:34.849, Allow the user to create findings, create audit or workpaper findings, null, null, null, null, null, null).
这是错误日志:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "pgroup_generator")
@SequenceGenerator(name="pgroup_generator", sequenceName = "pg_seq", allocationSize=50)
@Column(
name = "group_id",
unique = true,
updatable = false,
nullable = false
)
private Long id;
@Column(name="group_name",unique = true)
private String groupName;
@OneToMany(targetEntity=PermissionsEntity.class, mappedBy = "permissionGroup", cascade=CascadeType.ALL, fetch = FetchType.LAZY)
private List<PermissionsEntity> permissions= new ArrayList<>();
public void setPermissions(List<PermissionsEntity> permissions) {
this.permissions = permissions;
for(PermissionsEntity p:permissions) {
p.setPermissionGroup(this);
}
}
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name="group_id", referencedColumnName = "group_id", insertable = false, updatable = false)
private PermissionGroupEntity permissionGroup;
org.postgresql.util.PSQLException: ERROR: null value in column "permission_group_id" violates not-null constraint
Detail: Failing row contains (11, null, 2020-11-02 10:52:34.849, null, 2020-11-02 10:52:34.849, Allow the user to create findings, create audit or workpaper findings, null, null, null, null, null, null).
因为您在该
permissionGroup
上有insertable=false
,所以未插入该组,将其保留为null。删除该设置,将其保留为默认值true
,并且allocationSize=50
将是一个问题。让Postgres处理序列和ID,并在代码中使用@GeneratedValue(strategy=GenerationType.IDENTITY)
。尝试使用IDENTITY generator,但仍然抛出相同的错误更改对我不起作用,仍然抛出相同的错误。