ProductEvents.java

package com.tradecloud.domain.configuration;

import com.tradecloud.authentication.User;

import javax.persistence.*;
import javax.xml.bind.annotation.*;
import java.util.HashSet;
import java.util.Set;

/**
 * Meta-data of product events.
 */
@Entity
@Table(name = "productevents")
@Access(AccessType.FIELD)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "ProductEvents")
public class ProductEvents extends EventConfig<ProductEventsMetaData> {

    private static final long serialVersionUID = 1L;

    @ManyToOne
    @XmlElement(name = "ProductEventsMetaData")
    @JoinTable(name = "productevents_producteventsmetadata", joinColumns = {@JoinColumn(name = "productevent_id", unique = false)},
            inverseJoinColumns = {@JoinColumn(name = "metadata_id", unique = false)})
    private ProductEventsMetaData eventsMetaData;

    @XmlTransient
    @ManyToMany
    @JoinTable(name = "integrationuser_productevents", joinColumns = {@JoinColumn(name = "productevent_id", unique = false)},
            inverseJoinColumns = {@JoinColumn(name = "integrationuser_id", unique = false)})
    private Set<User> users = new HashSet<>();

    public ProductEventsMetaData getEventsMetaData() {
        return eventsMetaData;
    }

    @Override
    public void setEventsMetaData(ProductEventsMetaData eventsMetaData) {
        this.eventsMetaData = eventsMetaData;
    }

    @Override
    public Set<User> getUsers() {
        return users;
    }

    public void setUsers(Set<User> users) {
        this.users = users;
    }
}