package org.dayatang.persistence.test.domain; import org.apache.commons.lang3.builder.ToStringBuilder; import org.dayatang.domain.AbstractEntity; import javax.persistence.*; import javax.validation.constraints.Size; import java.util.List; @Entity @Table(name = "dictionaries") @NamedQueries({ @NamedQuery(name = "Dictionay.findByCategory", query = "select o from Dictionary as o where o.disabled = false and o.category = :category order by o.sortOrder"), @NamedQuery(name = "Dictionay.findByCategoryArrayParams", query = "select o from Dictionary as o where o.disabled = false and o.category = ?1 order by o.sortOrder"), @NamedQuery(name = "Dictionay.findByCategoryAndCode", query = "select o from Dictionary as o where o.disabled = false and o.category = ?1 and o.code = ?2"), @NamedQuery(name = "Dictionay.updateDescription", query = "update Dictionary set description = :description where category = :category"), @NamedQuery(name = "Dictionay.findNameAndOrder", query = "select o.code, o.text from Dictionary o where o.category = :category")}) public class Dictionary extends AbstractEntity { private static final long serialVersionUID = 5429887402331650527L; @Size(min = 1) private String code; @Size(min = 1) private String text; @ManyToOne(cascade = CascadeType.PERSIST) @JoinColumn(name = "category_id") private DictionaryCategory category; @Column(name = "sort_order") private int sortOrder; @Column(name = "is_disabled") private boolean disabled = false; private String description; @Column(name = "parent_code") private String parentCode; public Dictionary() { } public Dictionary(String code, String text, DictionaryCategory category) { this.code = code; this.text = text; this.category = category; } /** * @return the code */ public String getCode() { return code; } /** * @param code the code to set */ public void setCode(String code) { this.code = code; } /** * @return the text */ public String getText() { return text; } /** * @param text the text to set */ public void setText(String text) { this.text = text; } /** * @return the category */ public DictionaryCategory getCategory() { return category; } /** * @param category the category to set */ public void setCategory(DictionaryCategory category) { this.category = category; } /** * @return the sortOrder */ public int getSortOrder() { return sortOrder; } /** * @param sortOrder the sortOrder to set */ public void setSortOrder(int sortOrder) { this.sortOrder = sortOrder; } /** * @return the disabled */ public boolean isDisabled() { return disabled; } /** * @param disabled the disabled to set */ public void setDisabled(boolean disabled) { this.disabled = disabled; } /** * @return the description */ public String getDescription() { return description; } /** * @param description the description to set */ public void setDescription(String description) { this.description = description; } /** * @return the parentCode */ public String getParentCode() { return parentCode; } /** * @param parentCode the parentCode to set */ public void setParentCode(String parentCode) { this.parentCode = parentCode; } public void disable() { setDisabled(true); save(); } public static Dictionary get(Long id) { return getRepository().get(Dictionary.class, id); } public static Dictionary load(Long id) { return getRepository().load(Dictionary.class, id); } public static List<Dictionary> findByCategory(DictionaryCategory category) { return getRepository().createNamedQuery("Dictionay.findByCategory").addParameter("category", category).list(); } @Override public String toString() { return new ToStringBuilder(this).append("code", code).append("text", text).toString(); } @Override public String[] businessKeys() { return new String[] {"code", "category"}; } }