class PermissionEntity extends GenericEntity<String> implements RecordCreationEntity, RecordModifierEntity {

    @Override
    @Pattern(regexp = "^[0-9a-zA-Z_\\-]+$", message = "ID只能由数字,字母,下划线和中划线组成", groups = CreateGroup.class)
    public String getId() {
        return super.getId();
    }

    @Column
    @Comment("权限名称")
    @Schema(description = "权限名称")
    @NotBlank(message = "权限名称不能为空", groups = CreateGroup.class)
    private String name;

    @Column
    @Comment("说明")
    @Schema(description = "说明")
    private String describe;

    @Column(nullable = false)
    @Comment("状态")
    @Schema(description = "状态")
    @DefaultValue("1")
    private Byte status;

    @Column
    @ColumnType(jdbcType = JDBCType.LONGVARCHAR)
    @JsonCodec
    @Comment("可选操作")
    @Schema(description = "可选操作")
    private List<ActionEntity> actions;

    @Column(name = "optional_fields")
    @ColumnType(jdbcType = JDBCType.LONGVARCHAR)
    @JsonCodec
    @Comment("可操作的字段")
    @Schema(description = "可操作字段")
    private List<OptionalField> optionalFields;

    @Column
    @ColumnType(jdbcType = JDBCType.LONGVARCHAR)
    @JsonCodec
    @Comment("关联权限")
    @Schema(description = "关联权限")
    private List<ParentPermission> parents;

    @Column
    @ColumnType(jdbcType = JDBCType.LONGVARCHAR)
    @JsonCodec
    @Comment("其他配置")
    @Schema(description = "其他配置")
    private Map<String, Object> properties;

    @Schema(description = "创建时间")
    @Column(updatable = false)
    @DefaultValue(generator = Generators.CURRENT_TIME)
    private Long createTime;

    @Schema(description = "创建人ID")
    @Column(length = 64, updatable = false)
    private String creatorId;

    @Schema(description = "修改时间")
    @Column
    @DefaultValue(generator = Generators.CURRENT_TIME)
    private Long modifyTime;

    @Schema(description = "修改人ID")
    @Column(length = 64, updatable = false)
    private String modifierId;

    public PermissionEntity copy(Predicate<ActionEntity> actionFilter,
                                 Predicate<OptionalField> fieldFilter) {<FILL_FUNCTION_BODY>}
}

        PermissionEntity entity = FastBeanCopier.copy(this, new PermissionEntity());

        if (!CollectionUtils.isEmpty(entity.getActions())) {
            entity.setActions(entity.getActions().stream().filter(actionFilter).collect(Collectors.toList()));
        }
        if (!CollectionUtils.isEmpty(entity.getOptionalFields())) {
            entity.setOptionalFields(entity
                                             .getOptionalFields()
                                             .stream()
                                             .filter(fieldFilter)
                                             .collect(Collectors.toList()));
        }
        return entity;
    
<methods>public non-sealed void <init>() ,public transient java.lang.String toString(java.lang.String[]) ,public java.lang.String toString() <variables>private java.lang.String id