1 package net.sumaris.core.model.file;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import lombok.Data;
26 import lombok.experimental.FieldNameConstants;
27 import net.sumaris.core.dao.technical.model.IUpdateDateEntityBean;
28 import net.sumaris.core.model.administration.user.Department;
29 import net.sumaris.core.model.administration.user.Person;
30 import org.hibernate.annotations.Cascade;
31
32 import javax.persistence.*;
33 import java.io.Serializable;
34 import java.util.ArrayList;
35 import java.util.Date;
36 import java.util.List;
37
38 @Data
39 @FieldNameConstants
40 @Entity
41 @Table(name = "file")
42 public class File implements Serializable, IUpdateDateEntityBean<Integer, Date> {
43
44 @Id
45 @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "FILE_SEQ")
46 @SequenceGenerator(name = "FILE_SEQ", sequenceName="FILE_SEQ")
47 private Integer id;
48
49 @Column(nullable = false)
50 private String name;
51
52 @Column(nullable = false, name = "content_type")
53 private String contentType;
54
55 @Column(length = 2000)
56 private String comments;
57
58
59
60 @Column(name = "creation_date", nullable = false)
61 @Temporal(TemporalType.TIMESTAMP)
62 private Date creationDate;
63
64 @Column(name = "update_date")
65 @Temporal(TemporalType.TIMESTAMP)
66 private Date updateDate;
67
68 @ManyToOne(fetch = FetchType.LAZY)
69 @JoinColumn(name = "recorder_department_fk", nullable = false)
70 private Department recorderDepartment;
71
72 @ManyToOne(fetch = FetchType.LAZY)
73 @JoinColumn(name = "recorder_person_fk")
74 private Person recorderPerson;
75
76
77
78 @OneToMany(fetch = FetchType.LAZY, targetEntity = FileLine.class, mappedBy = FileLine.Fields.FILE)
79 @Cascade(org.hibernate.annotations.CascadeType.DELETE)
80 private List<FileLine> lines = new ArrayList<>();
81
82
83 @ManyToOne(fetch = FetchType.LAZY)
84 @JoinColumn(name = "file_status_fk", nullable = false)
85 private FileStatus status;
86 }