ProductGroup.java

package com.tradecloud.domain.model.hfcmanagement;

import com.tradecloud.common.base.PersistenceBase;
import com.tradecloud.domain.item.Product;
import org.hibernate.annotations.NaturalId;

import javax.persistence.*;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import java.util.ArrayList;
import java.util.List;

@Entity
@Table(name = "productgroup", uniqueConstraints = {@UniqueConstraint(columnNames = {"reference"})})
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "productgroup")
public class ProductGroup extends PersistenceBase {

    /**
     *
     */
    private static final long serialVersionUID = 1L;
    @NaturalId
    private String reference;
    private String description;
    @OneToMany
    @XmlTransient
    private List<Product> products = new ArrayList<Product>();

    @OneToOne
    @XmlTransient
    private Product defaultProduct;

    public String getReference() {
        return reference;
    }

    public void setReference(String reference) {
        this.reference = reference;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public List<Product> getProducts() {
        return products;
    }

    public void setProducts(List<Product> products) {
        this.products = products;
    }

    @Override
    public String toString() {
        return this.getDescription() + " [id: " + getId() + ", reference: " + getReference() + "]";
    }

    public Product getDefaultProduct() {
        return defaultProduct;
    }

    public void setDefaultProduct(Product defaultProduct) {
        this.defaultProduct = defaultProduct;
    }
}