| margaretha | 543f200 | 2017-07-14 00:27:15 +0200 | [diff] [blame] | 1 | package de.ids_mannheim.korap.entity; |
| 2 | |
| margaretha | e353dfa | 2017-07-18 19:23:29 +0200 | [diff] [blame] | 3 | import java.util.Set; |
| 4 | |
| margaretha | 543f200 | 2017-07-14 00:27:15 +0200 | [diff] [blame] | 5 | import javax.persistence.Column; |
| 6 | import javax.persistence.Entity; |
| margaretha | e353dfa | 2017-07-18 19:23:29 +0200 | [diff] [blame] | 7 | import javax.persistence.FetchType; |
| margaretha | 543f200 | 2017-07-14 00:27:15 +0200 | [diff] [blame] | 8 | import javax.persistence.GeneratedValue; |
| 9 | import javax.persistence.GenerationType; |
| 10 | import javax.persistence.Id; |
| margaretha | e353dfa | 2017-07-18 19:23:29 +0200 | [diff] [blame] | 11 | import javax.persistence.JoinColumn; |
| 12 | import javax.persistence.JoinTable; |
| 13 | import javax.persistence.ManyToMany; |
| margaretha | 50179c8 | 2017-07-20 15:36:05 +0200 | [diff] [blame] | 14 | import javax.persistence.ManyToOne; |
| margaretha | 543f200 | 2017-07-14 00:27:15 +0200 | [diff] [blame] | 15 | import javax.persistence.Table; |
| margaretha | 50179c8 | 2017-07-20 15:36:05 +0200 | [diff] [blame] | 16 | import javax.persistence.UniqueConstraint; |
| margaretha | 543f200 | 2017-07-14 00:27:15 +0200 | [diff] [blame] | 17 | |
| margaretha | a14f1c2 | 2017-07-19 18:51:04 +0200 | [diff] [blame] | 18 | import org.hibernate.annotations.Fetch; |
| 19 | import org.hibernate.annotations.FetchMode; |
| 20 | |
| margaretha | 543f200 | 2017-07-14 00:27:15 +0200 | [diff] [blame] | 21 | import lombok.Getter; |
| 22 | import lombok.Setter; |
| 23 | |
| margaretha | 08bdabe | 2017-10-17 14:38:49 +0200 | [diff] [blame] | 24 | /** Describes annotations as a pair, e.g. foundry and layer where |
| 25 | * foundry denotes where the annotation comes from e.g. Tree tagger |
| 26 | * parser, and layer denotes the annotation layer e.g. part of speech. |
| 27 | * |
| 28 | * @author margaretha |
| 29 | * @see Annotation |
| 30 | */ |
| margaretha | 543f200 | 2017-07-14 00:27:15 +0200 | [diff] [blame] | 31 | @Setter |
| margaretha | e353dfa | 2017-07-18 19:23:29 +0200 | [diff] [blame] | 32 | @Getter |
| margaretha | 543f200 | 2017-07-14 00:27:15 +0200 | [diff] [blame] | 33 | @Entity |
| margaretha | 08bdabe | 2017-10-17 14:38:49 +0200 | [diff] [blame] | 34 | @Table(name = "annotation_pair", uniqueConstraints = @UniqueConstraint( |
| 35 | columnNames = { "annotation1", "annotation2" })) |
| margaretha | 543f200 | 2017-07-14 00:27:15 +0200 | [diff] [blame] | 36 | public class AnnotationPair { |
| 37 | @Id |
| 38 | @GeneratedValue(strategy = GenerationType.IDENTITY) |
| 39 | private int id; |
| 40 | @Column(name = "annotation1") |
| 41 | private int annotationId1; |
| 42 | @Column(name = "annotation2") |
| 43 | private int annotationId2; |
| margaretha | e353dfa | 2017-07-18 19:23:29 +0200 | [diff] [blame] | 44 | @Column(name = "description") |
| margaretha | 50179c8 | 2017-07-20 15:36:05 +0200 | [diff] [blame] | 45 | private String description; |
| margaretha | e353dfa | 2017-07-18 19:23:29 +0200 | [diff] [blame] | 46 | |
| margaretha | a14f1c2 | 2017-07-19 18:51:04 +0200 | [diff] [blame] | 47 | @Fetch(FetchMode.SELECT) |
| margaretha | 50179c8 | 2017-07-20 15:36:05 +0200 | [diff] [blame] | 48 | @ManyToOne //(fetch=FetchType.LAZY) |
| margaretha | e353dfa | 2017-07-18 19:23:29 +0200 | [diff] [blame] | 49 | @JoinColumn(name = "annotation1", insertable = false, updatable = false) |
| 50 | private Annotation annotation1; |
| margaretha | 08bdabe | 2017-10-17 14:38:49 +0200 | [diff] [blame] | 51 | |
| margaretha | a14f1c2 | 2017-07-19 18:51:04 +0200 | [diff] [blame] | 52 | @Fetch(FetchMode.SELECT) |
| margaretha | 50179c8 | 2017-07-20 15:36:05 +0200 | [diff] [blame] | 53 | @ManyToOne //(fetch=FetchType.LAZY) |
| margaretha | e353dfa | 2017-07-18 19:23:29 +0200 | [diff] [blame] | 54 | @JoinColumn(name = "annotation2", insertable = false, updatable = false) |
| 55 | private Annotation annotation2; |
| 56 | |
| margaretha | 08bdabe | 2017-10-17 14:38:49 +0200 | [diff] [blame] | 57 | @ManyToMany(fetch = FetchType.LAZY) //(fetch=FetchType.EAGER) |
| 58 | @JoinTable(name = "annotation_pair_value", |
| 59 | joinColumns = @JoinColumn(name = "pair_id", |
| 60 | referencedColumnName = "id"), |
| 61 | inverseJoinColumns = @JoinColumn(name = "value_id", |
| 62 | referencedColumnName = "id"), |
| 63 | uniqueConstraints = @UniqueConstraint( |
| 64 | columnNames = { "pair_id", "value_id" })) |
| margaretha | e353dfa | 2017-07-18 19:23:29 +0200 | [diff] [blame] | 65 | private Set<Annotation> values; |
| 66 | |
| margaretha | 08bdabe | 2017-10-17 14:38:49 +0200 | [diff] [blame] | 67 | |
| margaretha | e353dfa | 2017-07-18 19:23:29 +0200 | [diff] [blame] | 68 | @Override |
| 69 | public String toString () { |
| 70 | return "id=" + id + ", annotation1=" + annotationId1 + ", annotation2=" |
| margaretha | 50179c8 | 2017-07-20 15:36:05 +0200 | [diff] [blame] | 71 | + annotationId1 + ", description=" + description |
| margaretha | 08bdabe | 2017-10-17 14:38:49 +0200 | [diff] [blame] | 72 | + ", annotation1= " + annotation1 + ", annotation2= " |
| 73 | + annotation2; |
| 74 | |
| margaretha | e353dfa | 2017-07-18 19:23:29 +0200 | [diff] [blame] | 75 | } |
| margaretha | 543f200 | 2017-07-14 00:27:15 +0200 | [diff] [blame] | 76 | } |