@Override
    protected void introClassHeader(CodeWriter writer, EntityType model) throws IOException {
        Type queryType = typeMappings.getPathType(model, model, true);

        writer.line("@", generatedAnnotationClass.getSimpleName(), "(\"", getClass().getName(), "\")");

        TypeCategory category = model.getOriginalCategory();
        // serialize annotations only, if no bean types are used
        if (model.equals(queryType)) {
            for (Annotation annotation : model.getAnnotations()) {
                writer.annotation(annotation);
            }
        }
        writer.beginClass(queryType, new ClassType(category, entityPathType, model));
        writer.privateStaticFinal(Types.LONG_P, "serialVersionUID", String.valueOf(model.hashCode()));
    }
Create a new {@code MetaDataSerializer} instance

@param namingStrategy      naming strategy for table to class and column to property conversion
@param innerClassesForKeys wrap key properties into inner classes (default: false)
@param imports             java user imports
querydsl-sql-codegen/src/main/java/com/querydsl/sql/codegen/MetaDataSerializer.java