blob: fdd0ea86ee7675c1cd6c8fc1db2ba29d4946f437 [file] [log] [blame]
margaretha543f2002017-07-14 00:27:15 +02001package de.ids_mannheim.korap.entity;
2
margarethae353dfa2017-07-18 19:23:29 +02003import java.util.Set;
4
margaretha543f2002017-07-14 00:27:15 +02005import javax.persistence.Column;
6import javax.persistence.Entity;
margarethae353dfa2017-07-18 19:23:29 +02007import javax.persistence.FetchType;
margaretha543f2002017-07-14 00:27:15 +02008import javax.persistence.GeneratedValue;
9import javax.persistence.GenerationType;
10import javax.persistence.Id;
margarethae353dfa2017-07-18 19:23:29 +020011import javax.persistence.JoinColumn;
12import javax.persistence.JoinTable;
13import javax.persistence.ManyToMany;
margaretha50179c82017-07-20 15:36:05 +020014import javax.persistence.ManyToOne;
margaretha543f2002017-07-14 00:27:15 +020015import javax.persistence.Table;
margaretha50179c82017-07-20 15:36:05 +020016import javax.persistence.UniqueConstraint;
margaretha543f2002017-07-14 00:27:15 +020017
margarethaa14f1c22017-07-19 18:51:04 +020018import org.hibernate.annotations.Fetch;
19import org.hibernate.annotations.FetchMode;
20
margaretha543f2002017-07-14 00:27:15 +020021import lombok.Getter;
22import lombok.Setter;
23
margaretha08bdabe2017-10-17 14:38:49 +020024/** 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 */
margaretha543f2002017-07-14 00:27:15 +020031@Setter
margarethae353dfa2017-07-18 19:23:29 +020032@Getter
margaretha543f2002017-07-14 00:27:15 +020033@Entity
margaretha08bdabe2017-10-17 14:38:49 +020034@Table(name = "annotation_pair", uniqueConstraints = @UniqueConstraint(
35 columnNames = { "annotation1", "annotation2" }))
margaretha543f2002017-07-14 00:27:15 +020036public 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;
margarethae353dfa2017-07-18 19:23:29 +020044 @Column(name = "description")
margaretha50179c82017-07-20 15:36:05 +020045 private String description;
margarethae353dfa2017-07-18 19:23:29 +020046
margarethaa14f1c22017-07-19 18:51:04 +020047 @Fetch(FetchMode.SELECT)
margaretha50179c82017-07-20 15:36:05 +020048 @ManyToOne //(fetch=FetchType.LAZY)
margarethae353dfa2017-07-18 19:23:29 +020049 @JoinColumn(name = "annotation1", insertable = false, updatable = false)
50 private Annotation annotation1;
margaretha08bdabe2017-10-17 14:38:49 +020051
margarethaa14f1c22017-07-19 18:51:04 +020052 @Fetch(FetchMode.SELECT)
margaretha50179c82017-07-20 15:36:05 +020053 @ManyToOne //(fetch=FetchType.LAZY)
margarethae353dfa2017-07-18 19:23:29 +020054 @JoinColumn(name = "annotation2", insertable = false, updatable = false)
55 private Annotation annotation2;
56
margaretha08bdabe2017-10-17 14:38:49 +020057 @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" }))
margarethae353dfa2017-07-18 19:23:29 +020065 private Set<Annotation> values;
66
margaretha08bdabe2017-10-17 14:38:49 +020067
margarethae353dfa2017-07-18 19:23:29 +020068 @Override
69 public String toString () {
70 return "id=" + id + ", annotation1=" + annotationId1 + ", annotation2="
margaretha50179c82017-07-20 15:36:05 +020071 + annotationId1 + ", description=" + description
margaretha08bdabe2017-10-17 14:38:49 +020072 + ", annotation1= " + annotation1 + ", annotation2= "
73 + annotation2;
74
margarethae353dfa2017-07-18 19:23:29 +020075 }
margaretha543f2002017-07-14 00:27:15 +020076}