blob: fb3012d3d41efaf72e922a96b9f215dbb1fe5573 [file] [log] [blame]
margaretha5b708792023-05-12 16:55:29 +02001package de.ids_mannheim.korap.core.entity;
margaretha51e5e3f2018-10-17 15:10:03 +02002
3import java.util.Set;
4
margaretha6e796842023-08-17 15:10:45 +02005import jakarta.persistence.Column;
6import jakarta.persistence.Entity;
7import jakarta.persistence.FetchType;
8import jakarta.persistence.GeneratedValue;
9import jakarta.persistence.GenerationType;
10import jakarta.persistence.Id;
11import jakarta.persistence.JoinColumn;
12import jakarta.persistence.JoinTable;
13import jakarta.persistence.ManyToMany;
14import jakarta.persistence.ManyToOne;
15import jakarta.persistence.Table;
16import jakarta.persistence.UniqueConstraint;
margaretha51e5e3f2018-10-17 15:10:03 +020017import lombok.Getter;
18import lombok.Setter;
19
margaretha398f4722019-01-09 19:07:20 +010020/**
21 * Describes the annotation key mapping to annotation_key table in the
22 * database and annotation key relations to {@link AnnotationLayer}
23 * and {@link Annotation}.
24 *
25 * @author margaretha
26 *
27 */
margaretha51e5e3f2018-10-17 15:10:03 +020028@Setter
29@Getter
30@Entity
margaretha35e1ca22023-11-16 22:00:01 +010031@Table(name = "annotation_key", uniqueConstraints = @UniqueConstraint(columnNames = {
32 "layer_id", "key_id" }))
margaretha51e5e3f2018-10-17 15:10:03 +020033public class AnnotationKey {
34
35 @Id
36 @GeneratedValue(strategy = GenerationType.IDENTITY)
37 private int id;
38 @Column(name = "key_id")
39 private int keyId;
40 @Column(name = "layer_id")
41 private int layerId;
42
43 @ManyToOne(fetch = FetchType.EAGER)
44 @JoinColumn(name = "layer_id", insertable = false, updatable = false)
45 private AnnotationLayer layer;
46
47 @ManyToOne(fetch = FetchType.EAGER)
48 @JoinColumn(name = "key_id", insertable = false, updatable = false)
49 private Annotation key;
50
51 @ManyToMany(fetch = FetchType.EAGER)
margaretha35e1ca22023-11-16 22:00:01 +010052 @JoinTable(name = "annotation_value", joinColumns = @JoinColumn(name = "key_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "value_id", referencedColumnName = "id"), uniqueConstraints = @UniqueConstraint(columnNames = {
53 "key_id", "value_id" }))
margaretha51e5e3f2018-10-17 15:10:03 +020054 private Set<Annotation> values;
55
56 public AnnotationKey () {}
57
58 public AnnotationKey (int layerId, int keyId) {
59 this.layerId = layerId;
60 this.keyId = keyId;
61 }
62
63}