1 package net.sumaris.core.model.technical.configuration;
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.model.referential.IItemReferentialEntity;
28 import net.sumaris.core.model.referential.Status;
29 import org.hibernate.annotations.Cascade;
30
31 import javax.persistence.*;
32 import java.util.ArrayList;
33 import java.util.Date;
34 import java.util.List;
35
36 @Data
37 @FieldNameConstants
38 @Entity
39 @Table(name = "software")
40 public class Software implements IItemReferentialEntity {
41
42 @Id
43 @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SOFTWARE_SEQ")
44 @SequenceGenerator(name = "SOFTWARE_SEQ", sequenceName="SOFTWARE_SEQ")
45 private Integer id;
46
47 @Column(nullable = false, length = LENGTH_LABEL, unique = true)
48 private String label;
49
50 @Column(nullable = false, length = LENGTH_NAME)
51 private String name;
52
53 @ManyToOne(fetch = FetchType.LAZY)
54 @JoinColumn(name = "status_fk", nullable = false)
55 private Status status;
56
57 @Column(name = "creation_date", nullable = false)
58 @Temporal(TemporalType.TIMESTAMP)
59 private Date creationDate;
60
61 @Column(name = "update_date")
62 @Temporal(TemporalType.TIMESTAMP)
63 private Date updateDate;
64
65 @OneToMany(fetch = FetchType.EAGER, targetEntity = SoftwareProperty.class, mappedBy = SoftwareProperty.Fields.SOFTWARE)
66 @Cascade(org.hibernate.annotations.CascadeType.DELETE)
67 private List<SoftwareProperty> properties = new ArrayList<>();
68
69 }