package {{class.package}};

import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Table;{% if class.extends == null %} import java.io.Serializable; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.SequenceGenerator;{% endif %}{% for import in class.imports %} import {{import}};{% endfor %}

/**

* {{class.name}}
*/

@Entity @Table(name = “{{class.table_name}}”){% for annotation in class.annotations %} {{annotation}}{% endfor %}{% if class.extends == null %} @SequenceGenerator(name = “{{class.sequence_name}}”, sequenceName = “{{class.sequence_name}}”){% endif %} public class {{class.name}}{% if class.extends != null %} extends {{class.extends}}{% else %} implements Serializable{% endif %} {

private static final long serialVersionUID = 1L;{% if class.extends == null %}

@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "{{class.sequence_name}}")
private Long id;

{% endif %} {% for attribute in class.attributes %} {% for annotation in attribute.annotations %}{{annotation}}

{% endfor %}private {{attribute.type}} {{attribute.name}};

{% endfor %}{% for ass in class.relations %} {% for annotation in ass.annotations %} {{annotation}} {% endfor %} private {{ass.att_type}} {{ass.name}}{{ass.initialize}};

{% endfor %}{% if class.extends == null %} public Long getId() {

        return id;
}

public void setId(Long id) {
        this.id = id;
}{% endif %}{% for attribute in class.attributes %}
{{attribute.visibility}} void set{{attribute.name | capitalize_first}}({{attribute.type | java}} {{attribute.name}}) {
        this.{{attribute.name}} = {{attribute.name}};
}

{{attribute.visibility}} {{class.name}} with{{attribute.name | capitalize_first}}({{attribute.type | java}} {{attribute.name}}) {
        this.set{{attribute.name | capitalize_first}}({{attribute.name}});
        return this;
}       

{{attribute.anotatios}}{{attribute.visibility}} {{attribute.type | java}} get{{attribute.name | capitalize_first}}() {
        return this.{{attribute.name}};
}
{% endfor %}{% for ass in class.relations %}
{{ass.visibility}} void set{{ass.name | capitalize_first}}({{ass.att_type}} {{ass.name}}) {
        this.{{ass.name}} = {{ass.name}};
}

{{ass.visibility}} {{ass.att_type}} get{{ass.name | capitalize_first}}() {
        return this.{{ass.name}};
}
{% endfor %}

}