WorkLoadCategory.java

package com.tradecloud.domain.workload;

import com.tradecloud.common.base.PersistenceBase;

import javax.persistence.*;
import java.io.Serializable;
import java.util.List;
import java.util.Objects;

@Entity
@Table(name = "workload_categories")
@Access(AccessType.FIELD)
public class WorkLoadCategory extends PersistenceBase implements Serializable {
    @Column(nullable = false, unique = true)
    private String name;

    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
    @JoinTable(name = "workload_category_rule", joinColumns = {@JoinColumn(name = "category_id")},
            inverseJoinColumns = {@JoinColumn(name = "rule_id")})
    private List<WorkLoadRule> rules;

    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
    @JoinTable(name = "workload_category_comment", joinColumns = {@JoinColumn(name = "category_id")},
            inverseJoinColumns = {@JoinColumn(name = "comment_id")})
    private List<WorkLoadComment> comments;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<WorkLoadRule> getRules() {
        return rules;
    }

    public void setRules(List<WorkLoadRule> rules) {
        this.rules = rules;
    }

    public List<WorkLoadComment> getComments() {
        return comments;
    }

    public void setComments(List<WorkLoadComment> comments) {
        this.comments = comments;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        WorkLoadCategory that = (WorkLoadCategory) o;
        return Objects.equals(name, that.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), name);
    }
}