EventUser.java 2.63 KB
package fi.insomnia.bortal.model;

import java.util.ArrayList;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.Table;

import org.eclipse.persistence.annotations.OptimisticLocking;
import org.eclipse.persistence.annotations.OptimisticLockingType;

@Entity
@Table(name = "event_users")
@OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS)
public class EventUser extends GenericEntity {

    // NOTICE!!!!
    // These parameters are event specific and should not be accessed directly!

    /**
     * 
     */
    private static final long serialVersionUID = 6042691271548196815L;

    @OneToMany(mappedBy = "voter", cascade = CascadeType.ALL)
    private List<Vote> votes;

    @OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
    private List<UserNote> notes;

    @ManyToMany()
    @JoinTable(name = "role_memberships", inverseJoinColumns = {
            @JoinColumn(name = "role_id", referencedColumnName = Role.ID_COLUMN) },
            joinColumns = { @JoinColumn(name = "user_id", referencedColumnName =
                    "id") })
    private List<Role> roles = new ArrayList<Role>();

    @OneToMany(mappedBy = "user")
    private List<LogEntry> logEntryList;

    @OneToMany(mappedBy = "user")
    private List<CompoEntryParticipant> compoEntryParticipants;

    @OneToMany(mappedBy = "creator")
    @OrderBy("id")
    private List<CompoEntry> compoEntries;

    @OneToMany(mappedBy = "creator", cascade = ALL)
    private List<PlaceGroup> placeGroups = new ArrayList<PlaceGroup>();

    @OneToMany(mappedBy = "user")
    private List<GroupMembership> groupMemberships;

    /**
     * The places this user has registered into.
     */
    @OneToMany(mappedBy = "currentUser", fetch = FetchType.LAZY)
    @OrderBy("id")
    private List<Place> currentPlaces;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
    private List<PrintedCard> printedCards;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
    @OrderBy("id")
    private List<AccountEvent> accountEvents;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
    @OrderBy("id")
    private List<Bill> bills;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "seller")
    @OrderBy("id")
    private List<AccountEvent> soldItems;

    @OneToMany(mappedBy = "admin")
    private List<EventOrganiser> eventOrganiser;

    @OneToMany(mappedBy = "user")
    private List<PollAnswer> pollAnswers;

}