package fr.plil.sio.persistence.api; import java.io.Serializable; import java.util.LinkedList; import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Table; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; /** * A right is unique by itd ID, i.e. it can exist two rights with the same name in the database. * A right may have a parent, null else. * A right can have zero, one or more siblings. */ @Entity @Table(name = "RIGHT_T") public class Right implements Serializable{ @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "RIGHT_ID") private Long id; @Column(name = "NAME_C") private String name; /// the parent right @ManyToOne(optional = true) @JoinColumn(name = "PARENT") private Right parent; @ManyToOne(optional = true) @JoinColumn(name = "GROUP_ID") private Group group; /// the sibling right(s), eventually empty @OneToMany(mappedBy = "parent", cascade = CascadeType.REMOVE) private List siblings = new LinkedList<>(); public List getSiblings() { return siblings; } public void setSiblings(List siblings) { this.siblings = siblings; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Right getParent() { return parent; } public void setParent(Right parent) { this.parent = parent; } }