blob: ccf45362a6dc8d752bb2995f3befa1a493869974 [file] [log] [blame]
margarethabe935322024-11-13 10:21:54 +01001package de.ids_mannheim.korap.entity;
margaretha51e5e3f2018-10-17 15:10:03 +02002
3import java.util.Set;
4
margaretha51e5e3f2018-10-17 15:10:03 +02005import org.hibernate.annotations.Fetch;
6import org.hibernate.annotations.FetchMode;
7
margaretha6e796842023-08-17 15:10:45 +02008import jakarta.persistence.CascadeType;
9import jakarta.persistence.Column;
10import jakarta.persistence.Entity;
11import jakarta.persistence.FetchType;
12import jakarta.persistence.GeneratedValue;
13import jakarta.persistence.GenerationType;
14import jakarta.persistence.Id;
15import jakarta.persistence.JoinColumn;
16import jakarta.persistence.ManyToOne;
17import jakarta.persistence.OneToMany;
18import jakarta.persistence.Table;
19import jakarta.persistence.UniqueConstraint;
margaretha51e5e3f2018-10-17 15:10:03 +020020import lombok.Getter;
21import lombok.Setter;
22
23/**
margaretha398f4722019-01-09 19:07:20 +010024 * Describes annotation layers as a pair of foundry and layer where
margaretha51e5e3f2018-10-17 15:10:03 +020025 * 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 */
31@Setter
32@Getter
33@Entity
margaretha35e1ca22023-11-16 22:00:01 +010034@Table(name = "annotation_layer", uniqueConstraints = @UniqueConstraint(columnNames = {
35 "foundry_id", "layer_id" }))
margaretha51e5e3f2018-10-17 15:10:03 +020036public class AnnotationLayer {
37 @Id
38 @GeneratedValue(strategy = GenerationType.IDENTITY)
39 private int id;
40 @Column(name = "foundry_id")
41 private int foundryId;
42 @Column(name = "layer_id")
43 private int layerId;
44 @Column(name = "description")
45 private String description;
46
47 @Fetch(FetchMode.SELECT)
48 @ManyToOne // (fetch=FetchType.LAZY)
49 @JoinColumn(name = "foundry_id", insertable = false, updatable = false)
50 private Annotation foundry;
51
52 @Fetch(FetchMode.SELECT)
53 @ManyToOne // (fetch=FetchType.LAZY)
54 @JoinColumn(name = "layer_id", insertable = false, updatable = false)
55 private Annotation layer;
56
margaretha35e1ca22023-11-16 22:00:01 +010057 @OneToMany(mappedBy = "layer", fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
margaretha51e5e3f2018-10-17 15:10:03 +020058 private Set<AnnotationKey> keys;
59
60 @Override
61 public String toString () {
62 return "id=" + id + ", foundry=" + foundry + ", layer=" + layer
63 + ", description=" + description + ", keys= " + keys;
64
65 }
66}