1 package net.sumaris.core.model.referential.gear;
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.administration.programStrategy.Strategy;
28 import net.sumaris.core.model.referential.IItemReferentialEntity;
29 import net.sumaris.core.model.referential.Status;
30 import org.hibernate.annotations.Cascade;
31
32 import javax.persistence.*;
33 import java.util.Date;
34 import java.util.List;
35
36 @Data
37 @FieldNameConstants
38 @Entity
39 @Table(name = "gear")
40 @Cacheable
41 public class Gear implements IItemReferentialEntity {
42
43 @Id
44 @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "GEAR_SEQ")
45 @SequenceGenerator(name = "GEAR_SEQ", sequenceName="GEAR_SEQ")
46 private Integer id;
47
48 @ManyToOne(fetch = FetchType.LAZY)
49 @JoinColumn(name = "status_fk", nullable = false)
50 private Status status;
51
52 @Column(name = "creation_date", nullable = false)
53 @Temporal(TemporalType.TIMESTAMP)
54 private Date creationDate;
55
56 @Column(name = "update_date")
57 @Temporal(TemporalType.TIMESTAMP)
58 private Date updateDate;
59
60 @Column(nullable = false, length = LENGTH_LABEL)
61 private String label;
62
63 @Column(nullable = false, length = LENGTH_NAME)
64 private String name;
65
66 private String description;
67
68 @Column(length = LENGTH_COMMENTS)
69 private String comments;
70
71
72
73
74
75
76
77 @Column(name = "is_active")
78 private Boolean isActive;
79
80
81
82
83
84
85
86
87
88 @Column(name = "is_towed")
89 private Boolean isTowed;
90
91 @ManyToOne(fetch = FetchType.LAZY)
92 @JoinColumn(name = "gear_classification_fk", nullable = false)
93 private GearClassification gearClassification;
94
95 @ManyToOne(fetch = FetchType.LAZY)
96 @JoinColumn(name = "parent_gear_fk")
97 private Gear parent;
98
99 @OneToMany(fetch = FetchType.LAZY, targetEntity = Gear.class, mappedBy = Gear.Fields.PARENT)
100 @Cascade(org.hibernate.annotations.CascadeType.DELETE)
101 private List<Gear> children;
102
103 @ManyToMany(fetch = FetchType.LAZY, targetEntity = Strategy.class, mappedBy = Strategy.Fields.GEARS)
104 @Cascade(org.hibernate.annotations.CascadeType.DETACH)
105 private List<Strategy> strategies;
106
107
108
109
110
111
112
113 }