package models; import javax.persistence.*; import java.util.ArrayList; import java.util.List; @Entity @Table(name = "POS_POSITION") public class PositionModel extends AuditedModel { public final static Finder<Long, PositionModel> find = new Finder<>(PositionModel.class); @Id @GeneratedValue(strategy = GenerationType.IDENTITY) public Long id; @Column(unique = true) public String name; // this field is not stored in the db, see OrderModel.position_name @Transient public String alias; @Transient public boolean isDeletable; public Double latitude; public Double longitude; @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinTable(name = "pos_position_tags", joinColumns = { @JoinColumn(name = "POSITION_ID", nullable = false, updatable = false)}, inverseJoinColumns = {@JoinColumn(name = "TAG_ID", nullable = false, updatable = false)}) @OrderBy(value="name") public List<PositionTagModel> tags = new ArrayList<PositionTagModel>() { }; public static PositionModel findByName(String name) { return find.where().ieq("name", name).findUnique(); } }