class FileEntity extends GenericEntity<String> implements RecordCreationEntity {

    @Column(nullable = false)
    private String name;

    @Column(nullable = false)
    private String extension;

    @Column(nullable = false)
    private Long length;

    @Column(nullable = false, length = 32)
    private String md5;

    @Column(nullable = false, length = 64)
    private String sha256;

    @Column(nullable = false)
    @DefaultValue(generator = Generators.CURRENT_TIME)
    private Long createTime;

    @Column(length = 64)
    private String creatorId;

    @Column(length = 64, nullable = false)
    private String serverNodeId;

    @Column(length = 512, nullable = false)
    private String storagePath;

    @Column
    @EnumCodec(toMask = true)
    @ColumnType(jdbcType = JDBCType.BIGINT, javaType = Long.class)
    private FileOption[] options;

    @Column
    @JsonCodec
    @ColumnType(jdbcType = JDBCType.LONGVARCHAR, javaType = String.class)
    private Map<String, Object> others;


    public FileInfo toInfo() {
        return copyTo(new FileInfo());
    }

    public static FileEntity of(FileInfo fileInfo,String storagePath,String serverNodeId) {<FILL_FUNCTION_BODY>}

}

        FileEntity fileEntity = new FileEntity().copyFrom(fileInfo);
        fileEntity.setStoragePath(storagePath);
        fileEntity.setServerNodeId(serverNodeId);
        return fileEntity;
    
<no_super_class>