首页 > 解决方案 > 一对多关系抛出(“permission_group_id”列中的空值违反非空约束)

问题描述

父.java:

@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);
        }
    }

子.java:

@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).
    

标签: springspring-boothibernatespring-data-jpahibernate-mapping

解决方案


因为你有insertable = false那个permissionGroup,它没有被插入,让它为空。删除该设置以将其保留为默认值true


推荐阅读